From 8fab91c5c71024956897d1851344a8a80d9f0dae Mon Sep 17 00:00:00 2001 From: ygx Date: Thu, 5 Mar 2026 23:45:39 +0800 Subject: [PATCH] feat: init --- .gitignore | 24 + LICENSE | 21 + README.md | 0 babel.config.js | 3 + commitlint.config.js | 3 + components.d.ts | 24 + config/plugin/arcoResolver.ts | 19 + config/plugin/arcoStyleImport.ts | 12 + config/plugin/compress.ts | 31 + config/plugin/visualizer.ts | 20 + config/utils/index.ts | 9 + config/vite.config.base.ts | 45 + config/vite.config.dev.ts | 24 + config/vite.config.prod.ts | 28 + index.html | 13 + package.json | 81 + pnpm-lock.yaml | 8926 +++++++++++ prettier.config.mjs | 16 + src/App.vue | 26 + src/api/dashboard.ts | 22 + src/api/interceptor.ts | 72 + src/api/list.ts | 56 + src/api/message.ts | 38 + src/api/profile.ts | 49 + src/api/user-center.ts | 88 + src/api/user.ts | 27 + src/api/visualization.ts | 70 + src/assets/images/login-banner.png | Bin 0 -> 63369 bytes src/assets/logo.svg | 12 + src/assets/style/breakpoint.less | 19 + src/assets/style/custom.less | 43 + src/assets/style/global.less | 91 + src/assets/world.json | 12822 ++++++++++++++++ src/components/breadcrumb/index.vue | 35 + src/components/chart/index.vue | 42 + src/components/footer/index.vue | 27 + src/components/global-setting/block.vue | 68 + .../global-setting/form-wrapper.vue | 34 + src/components/global-setting/index.vue | 98 + src/components/index.ts | 29 + src/components/menu/index.vue | 151 + src/components/menu/use-menu-tree.ts | 67 + src/components/message-box/index.vue | 116 + src/components/message-box/list.vue | 140 + src/components/message-box/locale/en-US.ts | 13 + src/components/message-box/locale/zh-CN.ts | 13 + src/components/navbar/index.vue | 252 + src/components/tab-bar/index.vue | 90 + src/components/tab-bar/readme.md | 11 + src/components/tab-bar/tab-item.vue | 188 + src/config/settings.json | 17 + src/directive/index.ts | 8 + src/directive/permission/index.ts | 30 + src/env.d.ts | 7 + src/hooks/chart-option.ts | 27 + src/hooks/loading.ts | 16 + src/hooks/locale.ts | 22 + src/hooks/permission.ts | 30 + src/hooks/request.ts | 26 + src/hooks/responsive.ts | 32 + src/hooks/themes.ts | 12 + src/hooks/user.ts | 24 + src/hooks/visible.ts | 16 + src/layout/default-layout.vue | 222 + src/layout/page-layout.vue | 21 + src/locale/en-US.ts | 57 + src/locale/en-US/settings.ts | 27 + src/locale/index.ts | 22 + src/locale/zh-CN.ts | 57 + src/locale/zh-CN/settings.ts | 26 + src/main.ts | 28 + src/mock/index.ts | 24 + src/mock/message-box.ts | 82 + src/mock/user.ts | 101 + src/router/app-menus/index.ts | 16 + src/router/constants.ts | 18 + src/router/guard/index.ts | 17 + src/router/guard/permission.ts | 48 + src/router/guard/userLoginInfo.ts | 43 + src/router/index.ts | 37 + src/router/routes/base.ts | 31 + src/router/routes/externalModules/arco.ts | 10 + src/router/routes/externalModules/faq.ts | 10 + src/router/routes/index.ts | 20 + src/router/routes/modules/dashboard.ts | 40 + src/router/routes/modules/exception.ts | 48 + src/router/routes/modules/list.ts | 38 + src/router/routes/modules/profile.ts | 28 + src/router/routes/modules/user.ts | 38 + src/router/routes/modules/visualization.ts | 38 + src/router/routes/types.ts | 17 + src/router/typings.d.ts | 16 + src/store/index.ts | 9 + src/store/modules/app/index.ts | 77 + src/store/modules/app/types.ts | 20 + src/store/modules/tab-bar/index.ts | 70 + src/store/modules/tab-bar/types.ts | 12 + src/store/modules/user/index.ts | 86 + src/store/modules/user/types.ts | 19 + src/types/echarts.ts | 10 + src/types/env.d.ts | 11 + src/types/global.ts | 37 + src/types/mock.ts | 5 + src/types/shims.d.ts | 9 + src/types/vue-i18n.d.ts | 9 + src/utils/auth.ts | 19 + src/utils/env.ts | 4 + src/utils/event.ts | 16 + src/utils/index.ts | 22 + src/utils/is.ts | 53 + src/utils/monitor.ts | 24 + src/utils/route-listener.ts | 28 + src/utils/setup-mock.ts | 23 + .../monitor/components/chat-item.vue | 94 + .../monitor/components/chat-list.vue | 76 + .../monitor/components/chat-panel.vue | 77 + .../components/data-statistic-list.vue | 117 + .../monitor/components/data-statistic.vue | 50 + .../monitor/components/quick-operation.vue | 32 + .../monitor/components/studio-information.vue | 21 + .../monitor/components/studio-status.vue | 79 + .../dashboard/monitor/components/studio.vue | 47 + src/views/dashboard/monitor/index.vue | 87 + src/views/dashboard/monitor/locale/en-US.ts | 48 + src/views/dashboard/monitor/locale/zh-CN.ts | 48 + src/views/dashboard/monitor/mock.ts | 26 + .../workplace/components/announcement.vue | 71 + .../dashboard/workplace/components/banner.vue | 33 + .../workplace/components/carousel.vue | 19 + .../components/categories-percent.vue | 114 + .../workplace/components/content-chart.vue | 197 + .../workplace/components/data-panel.vue | 97 + .../dashboard/workplace/components/docs.vue | 42 + .../workplace/components/popular-content.vue | 101 + .../workplace/components/quick-operation.vue | 35 + .../workplace/components/recently-visited.vue | 44 + src/views/dashboard/workplace/index.vue | 144 + src/views/dashboard/workplace/locale/en-US.ts | 38 + src/views/dashboard/workplace/locale/zh-CN.ts | 37 + src/views/dashboard/workplace/mock.ts | 129 + src/views/exception/403/index.vue | 37 + src/views/exception/403/locale/en-US.ts | 5 + src/views/exception/403/locale/zh-CN.ts | 5 + src/views/exception/404/index.vue | 42 + src/views/exception/404/locale/en-US.ts | 6 + src/views/exception/404/locale/zh-CN.ts | 6 + src/views/exception/500/index.vue | 37 + src/views/exception/500/locale/en-US.ts | 5 + src/views/exception/500/locale/zh-CN.ts | 5 + src/views/list/card/components/card-wrap.vue | 196 + .../card/components/quality-inspection.vue | 86 + .../list/card/components/rules-preset.vue | 48 + .../list/card/components/the-service.vue | 54 + src/views/list/card/index.vue | 92 + src/views/list/card/locale/en-US.ts | 19 + src/views/list/card/locale/zh-CN.ts | 19 + src/views/list/card/mock.ts | 179 + src/views/list/search-table/index.vue | 429 + src/views/list/search-table/locale/en-US.ts | 44 + src/views/list/search-table/locale/zh-CN.ts | 45 + src/views/list/search-table/mock.ts | 35 + src/views/login/components/banner.vue | 84 + src/views/login/components/login-form.vue | 148 + src/views/login/index.vue | 159 + src/views/login/locale/en-US.ts | 19 + src/views/login/locale/zh-CN.ts | 19 + src/views/not-found/index.vue | 30 + .../basic/components/operation-log.vue | 63 + .../profile/basic/components/profile-item.vue | 138 + src/views/profile/basic/index.vue | 83 + src/views/profile/basic/locale/en-US.ts | 39 + src/views/profile/basic/locale/zh-CN.ts | 39 + src/views/profile/basic/mock.ts | 58 + src/views/redirect/index.vue | 16 + .../user/info/components/latest-activity.vue | 75 + .../info/components/latest-notification.vue | 27 + src/views/user/info/components/my-project.vue | 82 + src/views/user/info/components/my-team.vue | 57 + .../user/info/components/user-info-header.vue | 68 + src/views/user/info/index.vue | 87 + src/views/user/info/locale/en-US.ts | 15 + src/views/user/info/locale/zh-CN.ts | 15 + src/views/user/info/mock.ts | 152 + .../setting/components/basic-information.vue | 135 + .../components/certification-records.vue | 63 + .../user/setting/components/certification.vue | 33 + .../components/enterprise-certification.vue | 106 + .../setting/components/security-settings.vue | 120 + .../user/setting/components/user-panel.vue | 140 + src/views/user/setting/index.vue | 57 + src/views/user/setting/locale/en-US.ts | 80 + src/views/user/setting/locale/zh-CN.ts | 78 + src/views/user/setting/mock.ts | 42 + .../data-analysis/components/chain-item.vue | 280 + .../components/content-period-analysis.vue | 216 + .../components/content-publish-ratio.vue | 157 + .../components/popular-author.vue | 59 + .../components/public-opinion.vue | 53 + .../visualization/data-analysis/index.vue | 59 + .../data-analysis/locale/en-US.ts | 16 + .../data-analysis/locale/zh-CN.ts | 16 + src/views/visualization/data-analysis/mock.ts | 97 + .../components/chain-item.vue | 140 + .../components/content-publishing-source.vue | 227 + .../components/content-type-distribution.vue | 99 + .../components/data-chain-growth.vue | 22 + .../components/data-overview.vue | 268 + .../components/user-actions.vue | 73 + .../multi-dimension-data-analysis/index.vue | 48 + .../locale/en-US.ts | 15 + .../locale/zh-CN.ts | 15 + .../multi-dimension-data-analysis/mock.ts | 47 + stylelint.config.mjs | 14 + tsconfig.json | 19 + 214 files changed, 33682 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 babel.config.js create mode 100644 commitlint.config.js create mode 100644 components.d.ts create mode 100644 config/plugin/arcoResolver.ts create mode 100644 config/plugin/arcoStyleImport.ts create mode 100644 config/plugin/compress.ts create mode 100644 config/plugin/visualizer.ts create mode 100644 config/utils/index.ts create mode 100644 config/vite.config.base.ts create mode 100644 config/vite.config.dev.ts create mode 100644 config/vite.config.prod.ts create mode 100644 index.html create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 prettier.config.mjs create mode 100644 src/App.vue create mode 100644 src/api/dashboard.ts create mode 100644 src/api/interceptor.ts create mode 100644 src/api/list.ts create mode 100644 src/api/message.ts create mode 100644 src/api/profile.ts create mode 100644 src/api/user-center.ts create mode 100644 src/api/user.ts create mode 100644 src/api/visualization.ts create mode 100644 src/assets/images/login-banner.png create mode 100644 src/assets/logo.svg create mode 100644 src/assets/style/breakpoint.less create mode 100644 src/assets/style/custom.less create mode 100644 src/assets/style/global.less create mode 100644 src/assets/world.json create mode 100644 src/components/breadcrumb/index.vue create mode 100644 src/components/chart/index.vue create mode 100644 src/components/footer/index.vue create mode 100644 src/components/global-setting/block.vue create mode 100644 src/components/global-setting/form-wrapper.vue create mode 100644 src/components/global-setting/index.vue create mode 100644 src/components/index.ts create mode 100644 src/components/menu/index.vue create mode 100644 src/components/menu/use-menu-tree.ts create mode 100644 src/components/message-box/index.vue create mode 100644 src/components/message-box/list.vue create mode 100644 src/components/message-box/locale/en-US.ts create mode 100644 src/components/message-box/locale/zh-CN.ts create mode 100644 src/components/navbar/index.vue create mode 100644 src/components/tab-bar/index.vue create mode 100644 src/components/tab-bar/readme.md create mode 100644 src/components/tab-bar/tab-item.vue create mode 100644 src/config/settings.json create mode 100644 src/directive/index.ts create mode 100644 src/directive/permission/index.ts create mode 100644 src/env.d.ts create mode 100644 src/hooks/chart-option.ts create mode 100644 src/hooks/loading.ts create mode 100644 src/hooks/locale.ts create mode 100644 src/hooks/permission.ts create mode 100644 src/hooks/request.ts create mode 100644 src/hooks/responsive.ts create mode 100644 src/hooks/themes.ts create mode 100644 src/hooks/user.ts create mode 100644 src/hooks/visible.ts create mode 100644 src/layout/default-layout.vue create mode 100644 src/layout/page-layout.vue create mode 100644 src/locale/en-US.ts create mode 100644 src/locale/en-US/settings.ts create mode 100644 src/locale/index.ts create mode 100644 src/locale/zh-CN.ts create mode 100644 src/locale/zh-CN/settings.ts create mode 100644 src/main.ts create mode 100644 src/mock/index.ts create mode 100644 src/mock/message-box.ts create mode 100644 src/mock/user.ts create mode 100644 src/router/app-menus/index.ts create mode 100644 src/router/constants.ts create mode 100644 src/router/guard/index.ts create mode 100644 src/router/guard/permission.ts create mode 100644 src/router/guard/userLoginInfo.ts create mode 100644 src/router/index.ts create mode 100644 src/router/routes/base.ts create mode 100644 src/router/routes/externalModules/arco.ts create mode 100644 src/router/routes/externalModules/faq.ts create mode 100644 src/router/routes/index.ts create mode 100644 src/router/routes/modules/dashboard.ts create mode 100644 src/router/routes/modules/exception.ts create mode 100644 src/router/routes/modules/list.ts create mode 100644 src/router/routes/modules/profile.ts create mode 100644 src/router/routes/modules/user.ts create mode 100644 src/router/routes/modules/visualization.ts create mode 100644 src/router/routes/types.ts create mode 100644 src/router/typings.d.ts create mode 100644 src/store/index.ts create mode 100644 src/store/modules/app/index.ts create mode 100644 src/store/modules/app/types.ts create mode 100644 src/store/modules/tab-bar/index.ts create mode 100644 src/store/modules/tab-bar/types.ts create mode 100644 src/store/modules/user/index.ts create mode 100644 src/store/modules/user/types.ts create mode 100644 src/types/echarts.ts create mode 100644 src/types/env.d.ts create mode 100644 src/types/global.ts create mode 100644 src/types/mock.ts create mode 100644 src/types/shims.d.ts create mode 100644 src/types/vue-i18n.d.ts create mode 100644 src/utils/auth.ts create mode 100644 src/utils/env.ts create mode 100644 src/utils/event.ts create mode 100644 src/utils/index.ts create mode 100644 src/utils/is.ts create mode 100644 src/utils/monitor.ts create mode 100644 src/utils/route-listener.ts create mode 100644 src/utils/setup-mock.ts create mode 100644 src/views/dashboard/monitor/components/chat-item.vue create mode 100644 src/views/dashboard/monitor/components/chat-list.vue create mode 100644 src/views/dashboard/monitor/components/chat-panel.vue create mode 100644 src/views/dashboard/monitor/components/data-statistic-list.vue create mode 100644 src/views/dashboard/monitor/components/data-statistic.vue create mode 100644 src/views/dashboard/monitor/components/quick-operation.vue create mode 100644 src/views/dashboard/monitor/components/studio-information.vue create mode 100644 src/views/dashboard/monitor/components/studio-status.vue create mode 100644 src/views/dashboard/monitor/components/studio.vue create mode 100644 src/views/dashboard/monitor/index.vue create mode 100644 src/views/dashboard/monitor/locale/en-US.ts create mode 100644 src/views/dashboard/monitor/locale/zh-CN.ts create mode 100644 src/views/dashboard/monitor/mock.ts create mode 100644 src/views/dashboard/workplace/components/announcement.vue create mode 100644 src/views/dashboard/workplace/components/banner.vue create mode 100644 src/views/dashboard/workplace/components/carousel.vue create mode 100644 src/views/dashboard/workplace/components/categories-percent.vue create mode 100644 src/views/dashboard/workplace/components/content-chart.vue create mode 100644 src/views/dashboard/workplace/components/data-panel.vue create mode 100644 src/views/dashboard/workplace/components/docs.vue create mode 100644 src/views/dashboard/workplace/components/popular-content.vue create mode 100644 src/views/dashboard/workplace/components/quick-operation.vue create mode 100644 src/views/dashboard/workplace/components/recently-visited.vue create mode 100644 src/views/dashboard/workplace/index.vue create mode 100644 src/views/dashboard/workplace/locale/en-US.ts create mode 100644 src/views/dashboard/workplace/locale/zh-CN.ts create mode 100644 src/views/dashboard/workplace/mock.ts create mode 100644 src/views/exception/403/index.vue create mode 100644 src/views/exception/403/locale/en-US.ts create mode 100644 src/views/exception/403/locale/zh-CN.ts create mode 100644 src/views/exception/404/index.vue create mode 100644 src/views/exception/404/locale/en-US.ts create mode 100644 src/views/exception/404/locale/zh-CN.ts create mode 100644 src/views/exception/500/index.vue create mode 100644 src/views/exception/500/locale/en-US.ts create mode 100644 src/views/exception/500/locale/zh-CN.ts create mode 100644 src/views/list/card/components/card-wrap.vue create mode 100644 src/views/list/card/components/quality-inspection.vue create mode 100644 src/views/list/card/components/rules-preset.vue create mode 100644 src/views/list/card/components/the-service.vue create mode 100644 src/views/list/card/index.vue create mode 100644 src/views/list/card/locale/en-US.ts create mode 100644 src/views/list/card/locale/zh-CN.ts create mode 100644 src/views/list/card/mock.ts create mode 100644 src/views/list/search-table/index.vue create mode 100644 src/views/list/search-table/locale/en-US.ts create mode 100644 src/views/list/search-table/locale/zh-CN.ts create mode 100644 src/views/list/search-table/mock.ts create mode 100644 src/views/login/components/banner.vue create mode 100644 src/views/login/components/login-form.vue create mode 100644 src/views/login/index.vue create mode 100644 src/views/login/locale/en-US.ts create mode 100644 src/views/login/locale/zh-CN.ts create mode 100644 src/views/not-found/index.vue create mode 100644 src/views/profile/basic/components/operation-log.vue create mode 100644 src/views/profile/basic/components/profile-item.vue create mode 100644 src/views/profile/basic/index.vue create mode 100644 src/views/profile/basic/locale/en-US.ts create mode 100644 src/views/profile/basic/locale/zh-CN.ts create mode 100644 src/views/profile/basic/mock.ts create mode 100644 src/views/redirect/index.vue create mode 100644 src/views/user/info/components/latest-activity.vue create mode 100644 src/views/user/info/components/latest-notification.vue create mode 100644 src/views/user/info/components/my-project.vue create mode 100644 src/views/user/info/components/my-team.vue create mode 100644 src/views/user/info/components/user-info-header.vue create mode 100644 src/views/user/info/index.vue create mode 100644 src/views/user/info/locale/en-US.ts create mode 100644 src/views/user/info/locale/zh-CN.ts create mode 100644 src/views/user/info/mock.ts create mode 100644 src/views/user/setting/components/basic-information.vue create mode 100644 src/views/user/setting/components/certification-records.vue create mode 100644 src/views/user/setting/components/certification.vue create mode 100644 src/views/user/setting/components/enterprise-certification.vue create mode 100644 src/views/user/setting/components/security-settings.vue create mode 100644 src/views/user/setting/components/user-panel.vue create mode 100644 src/views/user/setting/index.vue create mode 100644 src/views/user/setting/locale/en-US.ts create mode 100644 src/views/user/setting/locale/zh-CN.ts create mode 100644 src/views/user/setting/mock.ts create mode 100644 src/views/visualization/data-analysis/components/chain-item.vue create mode 100644 src/views/visualization/data-analysis/components/content-period-analysis.vue create mode 100644 src/views/visualization/data-analysis/components/content-publish-ratio.vue create mode 100644 src/views/visualization/data-analysis/components/popular-author.vue create mode 100644 src/views/visualization/data-analysis/components/public-opinion.vue create mode 100644 src/views/visualization/data-analysis/index.vue create mode 100644 src/views/visualization/data-analysis/locale/en-US.ts create mode 100644 src/views/visualization/data-analysis/locale/zh-CN.ts create mode 100644 src/views/visualization/data-analysis/mock.ts create mode 100644 src/views/visualization/multi-dimension-data-analysis/components/chain-item.vue create mode 100644 src/views/visualization/multi-dimension-data-analysis/components/content-publishing-source.vue create mode 100644 src/views/visualization/multi-dimension-data-analysis/components/content-type-distribution.vue create mode 100644 src/views/visualization/multi-dimension-data-analysis/components/data-chain-growth.vue create mode 100644 src/views/visualization/multi-dimension-data-analysis/components/data-overview.vue create mode 100644 src/views/visualization/multi-dimension-data-analysis/components/user-actions.vue create mode 100644 src/views/visualization/multi-dimension-data-analysis/index.vue create mode 100644 src/views/visualization/multi-dimension-data-analysis/locale/en-US.ts create mode 100644 src/views/visualization/multi-dimension-data-analysis/locale/zh-CN.ts create mode 100644 src/views/visualization/multi-dimension-data-analysis/mock.ts create mode 100644 stylelint.config.mjs create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e405567 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Bytedance, Inc. and its affiliates. + +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/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..38bb0c3 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + plugins: ['@vue/babel-plugin-jsx'], +} diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..98ee7df --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ['@commitlint/config-conventional'], +} diff --git a/components.d.ts b/components.d.ts new file mode 100644 index 0000000..f1bc198 --- /dev/null +++ b/components.d.ts @@ -0,0 +1,24 @@ +/* eslint-disable */ +// @ts-nocheck +// biome-ignore lint: disable +// oxlint-disable +// ------ +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +import { GlobalComponents } from 'vue' + +export {} + +/* prettier-ignore */ +declare module 'vue' { + export interface GlobalComponents { + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + } +} + +// For TSX support +declare global { + const RouterLink: typeof import('vue-router')['RouterLink'] + const RouterView: typeof import('vue-router')['RouterView'] +} \ No newline at end of file diff --git a/config/plugin/arcoResolver.ts b/config/plugin/arcoResolver.ts new file mode 100644 index 0000000..374ae67 --- /dev/null +++ b/config/plugin/arcoResolver.ts @@ -0,0 +1,19 @@ +/** + * If you use the template method for development, you can use the unplugin-vue-components plugin to enable on-demand loading support. + * 按需引入 + * https://github.com/antfu/unplugin-vue-components + * https://arco.design/vue/docs/start + * Although the Pro project is full of imported components, this plugin will be used by default. + * 虽然Pro项目中是全量引入组件,但此插件会默认使用。 + */ +import Components from 'unplugin-vue-components/vite' +import { ArcoResolver } from 'unplugin-vue-components/resolvers' + +export default function configArcoResolverPlugin() { + const arcoResolverPlugin = Components({ + dirs: [], // Avoid parsing src/components. 避免解析到src/components + deep: false, + resolvers: [ArcoResolver()], + }) + return arcoResolverPlugin +} diff --git a/config/plugin/arcoStyleImport.ts b/config/plugin/arcoStyleImport.ts new file mode 100644 index 0000000..775faad --- /dev/null +++ b/config/plugin/arcoStyleImport.ts @@ -0,0 +1,12 @@ +/** + * Theme import + * 样式按需引入 + * https://github.com/arco-design/arco-plugins/blob/main/packages/plugin-vite-vue/README.md + * https://arco.design/vue/docs/start + */ +import { vitePluginForArco } from '@arco-plugins/vite-vue' + +export default function configArcoStyleImportPlugin() { + const arcoResolverPlugin = vitePluginForArco({}) + return arcoResolverPlugin +} diff --git a/config/plugin/compress.ts b/config/plugin/compress.ts new file mode 100644 index 0000000..1990a3d --- /dev/null +++ b/config/plugin/compress.ts @@ -0,0 +1,31 @@ +/** + * Used to package and output gzip. Note that this does not work properly in Vite, the specific reason is still being investigated + * gzip压缩 + * https://github.com/anncwb/vite-plugin-compression + */ +import type { Plugin } from 'vite' +import compressPlugin from 'vite-plugin-compression' + +export default function configCompressPlugin(compress: 'gzip' | 'brotli', deleteOriginFile = false): Plugin | Plugin[] { + const plugins: Plugin[] = [] + + if (compress === 'gzip') { + plugins.push( + compressPlugin({ + ext: '.gz', + deleteOriginFile, + }) + ) + } + + if (compress === 'brotli') { + plugins.push( + compressPlugin({ + ext: '.br', + algorithm: 'brotliCompress', + deleteOriginFile, + }) + ) + } + return plugins +} diff --git a/config/plugin/visualizer.ts b/config/plugin/visualizer.ts new file mode 100644 index 0000000..be3a194 --- /dev/null +++ b/config/plugin/visualizer.ts @@ -0,0 +1,20 @@ +/** + * Generation packaging analysis + * 生成打包分析 + * + * Vite 7 + rollup-plugin-visualizer 目前是 ESM-only, + * 为避免在打包 vite.config.prod.ts 时被 esbuild 以 require 方式加载失败, + * 这里取消默认引入,仅在需要时手动在本地临时打开分析。 + */ +import { isReportMode } from '../utils' + +export default function configVisualizerPlugin() { + // 如需开启打包分析,可改为动态引入 rollup-plugin-visualizer: + // const { visualizer } = await import('rollup-plugin-visualizer') + // 并返回相应插件实例。 + if (isReportMode()) { + // 先返回空数组以保证构建稳定 + return [] + } + return [] +} diff --git a/config/utils/index.ts b/config/utils/index.ts new file mode 100644 index 0000000..82f750e --- /dev/null +++ b/config/utils/index.ts @@ -0,0 +1,9 @@ +/** + * Whether to generate package preview + * 是否生成打包报告 + */ +export default {} + +export function isReportMode(): boolean { + return process.env.REPORT === 'true' +} diff --git a/config/vite.config.base.ts b/config/vite.config.base.ts new file mode 100644 index 0000000..695734a --- /dev/null +++ b/config/vite.config.base.ts @@ -0,0 +1,45 @@ +import vue from '@vitejs/plugin-vue' +import vueJsx from '@vitejs/plugin-vue-jsx' +import { resolve } from 'path' +import { defineConfig } from 'vite' +import svgLoader from 'vite-svg-loader' +import configArcoStyleImportPlugin from './plugin/arcoStyleImport' + +export default defineConfig({ + base: './', + plugins: [vue(), vueJsx(), svgLoader({ svgoConfig: {} }), configArcoStyleImportPlugin()], + resolve: { + alias: [ + { + find: '@', + replacement: resolve(__dirname, '../src'), + }, + { + find: 'assets', + replacement: resolve(__dirname, '../src/assets'), + }, + { + find: 'vue-i18n', + replacement: 'vue-i18n/dist/vue-i18n.cjs.js', // Resolve the i18n warning issue + }, + { + find: 'vue', + replacement: 'vue/dist/vue.esm-bundler.js', // compile template + }, + ], + extensions: ['.ts', '.js'], + }, + define: { + 'process.env': {}, + }, + css: { + preprocessorOptions: { + less: { + modifyVars: { + hack: `true; @import (reference) "${resolve('src/assets/style/breakpoint.less')}";`, + }, + javascriptEnabled: true, + }, + }, + }, +}) diff --git a/config/vite.config.dev.ts b/config/vite.config.dev.ts new file mode 100644 index 0000000..0ad4630 --- /dev/null +++ b/config/vite.config.dev.ts @@ -0,0 +1,24 @@ +import { mergeConfig } from 'vite' +// import eslint from 'vite-plugin-eslint' +import baseConfig from './vite.config.base' + +export default mergeConfig( + { + mode: 'development', + server: { + open: true, + host: '0.0.0.0', + fs: { + strict: true, + }, + }, + plugins: [ + // eslint({ + // cache: false, + // include: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.vue'], + // exclude: ['node_modules'], + // }), + ], + }, + baseConfig +) diff --git a/config/vite.config.prod.ts b/config/vite.config.prod.ts new file mode 100644 index 0000000..502c5bb --- /dev/null +++ b/config/vite.config.prod.ts @@ -0,0 +1,28 @@ +import { mergeConfig } from 'vite' +import configArcoResolverPlugin from './plugin/arcoResolver' +import configCompressPlugin from './plugin/compress' +import configVisualizerPlugin from './plugin/visualizer' +import baseConfig from './vite.config.base' + +export default mergeConfig( + { + mode: 'production', + plugins: [configCompressPlugin('gzip'), configVisualizerPlugin(), configArcoResolverPlugin()], + build: { + chunkSizeWarningLimit: 20480, + reportCompressedSize: false, + rollupOptions: { + onwarn: () => {}, + output: { + chunkFileNames: 'static/js/[name]-[hash].js', + entryFileNames: 'static/js/[name]-[hash].js', + assetFileNames: 'static/[ext]/[name]-[hash].[ext]', + }, + }, + minify: 'esbuild', + target: 'es2015', + sourcemap: false, + }, + }, + baseConfig +) diff --git a/index.html b/index.html new file mode 100644 index 0000000..f80f809 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Vue Admin Arco - 开箱即用的中台前端/设计解决方案 + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..92b7fdb --- /dev/null +++ b/package.json @@ -0,0 +1,81 @@ +{ + "name": "vue-admin-arco", + "version": "2.0.0", + "private": true, + "author": "ArcoDesign Team", + "license": "MIT", + "scripts": { + "dev": "vite --config ./config/vite.config.dev.ts", + "build": "vue-tsc --noEmit --skipLibCheck && vite build --config ./config/vite.config.prod.ts", + "lint-staged": "npx lint-staged", + "prepare": "husky install", + "build:normal": "vite build --config ./config/vite.config.prod.ts", + "module:update": "ncu -u --reject vite-svg-loader,eslint --registry https://registry.npmmirror.com && pnpm i --no-frozen-lockfile", + "lint": "pnpm lint:eslint && pnpm lint:prettier", + "preview": "vite preview --config ./config/vite.config.prod.ts", + "lint:eslint": "eslint . --fix", + "lint:prettier": "prettier . --write" + }, + "dependencies": { + "@arco-design/web-vue": "^2.57.0", + "@vueuse/core": "^14.2.1", + "axios": "^1.13.6", + "dayjs": "^1.11.19", + "echarts": "^6.0.0", + "lodash": "^4.17.23", + "mitt": "^3.0.1", + "nprogress": "^0.2.0", + "pinia": "^3.0.4", + "query-string": "^9.3.1", + "sortablejs": "^1.15.7", + "vue": "^3.5.29", + "vue-echarts": "^8.0.1", + "vue-i18n": "^11.2.8", + "vue-router": "5" + }, + "devDependencies": { + "@arco-plugins/vite-vue": "^1.4.6", + "@commitlint/cli": "^20.4.3", + "@commitlint/config-conventional": "^20.4.3", + "@types/lodash": "^4.17.24", + "@types/mockjs": "^1.0.10", + "@types/nprogress": "^0.2.3", + "@types/sortablejs": "^1.15.9", + "@typescript-eslint/eslint-plugin": "^8.56.1", + "@typescript-eslint/parser": "^8.56.1", + "@vitejs/plugin-vue": "^6.0.4", + "@vitejs/plugin-vue-jsx": "^5.1.4", + "@vue/babel-plugin-jsx": "^2.0.1", + "@vue/compiler-sfc": "^3.5.29", + "consola": "^3.4.2", + "cross-env": "^10.1.0", + "eslint": "8.57.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-prettier": "^10.1.8", + "eslint-import-resolver-typescript": "^4.4.4", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-prettier": "^5.5.5", + "eslint-plugin-vue": "^10.8.0", + "husky": "^9.1.7", + "less": "^4.5.1", + "lint-staged": "^16.3.2", + "mockjs": "^1.1.0", + "postcss-html": "^1.8.1", + "prettier": "^3.8.1", + "rollup": "^4.59.0", + "rollup-plugin-visualizer": "^7.0.1", + "stylelint": "^17.4.0", + "stylelint-config-prettier": "^9.0.5", + "stylelint-config-rational-order": "^0.1.2", + "stylelint-config-recommended-vue": "^1.6.1", + "stylelint-config-standard": "^40.0.0", + "stylelint-order": "^7.0.1", + "typescript": "^5.9.3", + "unplugin-vue-components": "^31.0.0", + "vite": "^7.3.1", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-eslint": "^1.8.1", + "vite-svg-loader": "^4.0.0", + "vue-tsc": "^3.2.5" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..076afdc --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,8926 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@arco-design/web-vue': + specifier: ^2.57.0 + version: 2.57.0(vue@3.5.29(typescript@5.9.3)) + '@types/mockjs': + specifier: ^1.0.10 + version: 1.0.10 + '@vueuse/core': + specifier: ^14.2.1 + version: 14.2.1(vue@3.5.29(typescript@5.9.3)) + axios: + specifier: ^1.13.6 + version: 1.13.6 + dayjs: + specifier: ^1.11.19 + version: 1.11.19 + echarts: + specifier: ^6.0.0 + version: 6.0.0 + install: + specifier: ^0.13.0 + version: 0.13.0 + lodash: + specifier: ^4.17.23 + version: 4.17.23 + mitt: + specifier: ^3.0.1 + version: 3.0.1 + mockjs: + specifier: ^1.1.0 + version: 1.1.0 + nprogress: + specifier: ^0.2.0 + version: 0.2.0 + pinia: + specifier: ^3.0.4 + version: 3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) + pnpm: + specifier: ^10.30.3 + version: 10.30.3 + query-string: + specifier: ^9.3.1 + version: 9.3.1 + sortablejs: + specifier: ^1.15.7 + version: 1.15.7 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + vue: + specifier: ^3.5.29 + version: 3.5.29(typescript@5.9.3) + vue-echarts: + specifier: ^8.0.1 + version: 8.0.1(echarts@6.0.0)(vue@3.5.29(typescript@5.9.3)) + vue-i18n: + specifier: ^11.2.8 + version: 11.2.8(vue@3.5.29(typescript@5.9.3)) + vue-router: + specifier: '5' + version: 5.0.3(@vue/compiler-sfc@3.5.29)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) + devDependencies: + '@arco-plugins/vite-vue': + specifier: ^1.4.6 + version: 1.4.6 + '@commitlint/cli': + specifier: ^20.4.3 + version: 20.4.3(@types/node@25.3.3)(typescript@5.9.3) + '@commitlint/config-conventional': + specifier: ^20.4.3 + version: 20.4.3 + '@types/lodash': + specifier: ^4.17.24 + version: 4.17.24 + '@types/nprogress': + specifier: ^0.2.3 + version: 0.2.3 + '@types/sortablejs': + specifier: ^1.15.9 + version: 1.15.9 + '@typescript-eslint/eslint-plugin': + specifier: ^8.56.1 + version: 8.56.1(@typescript-eslint/parser@8.56.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(typescript@5.9.3) + '@typescript-eslint/parser': + specifier: ^8.56.1 + version: 8.56.1(eslint@8.57.0)(typescript@5.9.3) + '@vitejs/plugin-vue': + specifier: ^6.0.4 + version: 6.0.4(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) + '@vitejs/plugin-vue-jsx': + specifier: ^5.1.4 + version: 5.1.4(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) + '@vue/babel-plugin-jsx': + specifier: ^2.0.1 + version: 2.0.1(@babel/core@7.29.0) + '@vue/compiler-sfc': + specifier: ^3.5.29 + version: 3.5.29 + consola: + specifier: ^3.4.2 + version: 3.4.2 + cross-env: + specifier: ^10.1.0 + version: 10.1.0 + eslint: + specifier: 8.57.0 + version: 8.57.0 + eslint-config-airbnb-base: + specifier: ^15.0.0 + version: 15.0.0(eslint-plugin-import@2.32.0)(eslint@8.57.0) + eslint-config-prettier: + specifier: ^10.1.8 + version: 10.1.8(eslint@8.57.0) + eslint-import-resolver-typescript: + specifier: ^4.4.4 + version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@8.57.0) + eslint-plugin-import: + specifier: ^2.32.0 + version: 2.32.0(@typescript-eslint/parser@8.56.1(eslint@8.57.0)(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^5.5.5 + version: 5.5.5(@types/eslint@8.56.12)(eslint-config-prettier@10.1.8(eslint@8.57.0))(eslint@8.57.0)(prettier@3.8.1) + eslint-plugin-vue: + specifier: ^10.8.0 + version: 10.8.0(@typescript-eslint/parser@8.56.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.4.0(eslint@8.57.0)) + husky: + specifier: ^9.1.7 + version: 9.1.7 + less: + specifier: ^4.5.1 + version: 4.5.1 + lint-staged: + specifier: ^16.3.2 + version: 16.3.2 + postcss-html: + specifier: ^1.8.1 + version: 1.8.1 + prettier: + specifier: ^3.8.1 + version: 3.8.1 + rollup: + specifier: ^4.59.0 + version: 4.59.0 + rollup-plugin-visualizer: + specifier: ^7.0.1 + version: 7.0.1(rollup@4.59.0) + stylelint: + specifier: ^17.4.0 + version: 17.4.0(typescript@5.9.3) + stylelint-config-prettier: + specifier: ^9.0.5 + version: 9.0.5(stylelint@17.4.0(typescript@5.9.3)) + stylelint-config-rational-order: + specifier: ^0.1.2 + version: 0.1.2 + stylelint-config-recommended-vue: + specifier: ^1.6.1 + version: 1.6.1(postcss-html@1.8.1)(stylelint@17.4.0(typescript@5.9.3)) + stylelint-config-standard: + specifier: ^40.0.0 + version: 40.0.0(stylelint@17.4.0(typescript@5.9.3)) + stylelint-order: + specifier: ^7.0.1 + version: 7.0.1(stylelint@17.4.0(typescript@5.9.3)) + unplugin-vue-components: + specifier: ^31.0.0 + version: 31.0.0(vue@3.5.29(typescript@5.9.3)) + vite: + specifier: ^7.3.1 + version: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2) + vite-plugin-compression: + specifier: ^0.5.1 + version: 0.5.1(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2)) + vite-plugin-eslint: + specifier: ^1.8.1 + version: 1.8.1(eslint@8.57.0)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2)) + vite-svg-loader: + specifier: ^4.0.0 + version: 4.0.0 + vue-tsc: + specifier: ^3.2.5 + version: 3.2.5(typescript@5.9.3) + +packages: + + '@arco-design/color@0.4.0': + resolution: {integrity: sha512-s7p9MSwJgHeL8DwcATaXvWT3m2SigKpxx4JA1BGPHL4gfvaQsmQfrLBDpjOJFJuJ2jG2dMt3R3P8Pm9E65q18g==} + + '@arco-design/web-vue@2.57.0': + resolution: {integrity: sha512-R5YReC3C2sG3Jv0+YuR3B7kzkq2KdhhQNCGXD8T11xAoa0zMt6SWTP1xJQOdZcM9du+q3z6tk5mRvh4qkieRJw==} + peerDependencies: + vue: ^3.1.0 + + '@arco-plugins/vite-vue@1.4.6': + resolution: {integrity: sha512-i7asMOIWMKbTBo/ftJ5Kge+3X56b4dUyp1BNtYGc5IXVtCZ5mwnCVTNmfgzkKGXHRWEu01O5JXy/OMbUvzGYQQ==} + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.28.6': + resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@cacheable/memory@2.0.8': + resolution: {integrity: sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==} + + '@cacheable/utils@2.4.0': + resolution: {integrity: sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==} + + '@commitlint/cli@20.4.3': + resolution: {integrity: sha512-Z37EMoDT7+Upg500vlr/vZrgRsb6Xc5JAA3Tv7BYbobnN/ZpqUeZnSLggBg2+1O+NptRDtyujr2DD1CPV2qwhA==} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@20.4.3': + resolution: {integrity: sha512-9RtLySbYQAs8yEqWEqhSZo9nYhbm57jx7qHXtgRmv/nmeQIjjMcwf6Dl+y5UZcGWgWx435TAYBURONaJIuCjWg==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@20.4.3': + resolution: {integrity: sha512-jCZpZFkcSL3ZEdL5zgUzFRdytv3xPo8iukTe9VA+QGus/BGhpp1xXSVu2B006GLLb2gYUAEGEqv64kTlpZNgmA==} + engines: {node: '>=v18'} + + '@commitlint/ensure@20.4.3': + resolution: {integrity: sha512-WcXGKBNn0wBKpX8VlXgxqedyrLxedIlLBCMvdamLnJFEbUGJ9JZmBVx4vhLV3ZyA8uONGOb+CzW0Y9HDbQ+ONQ==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@20.0.0': + resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==} + engines: {node: '>=v18'} + + '@commitlint/format@20.4.3': + resolution: {integrity: sha512-UDJVErjLbNghop6j111rsHJYGw6MjCKAi95K0GT2yf4eeiDHy3JDRLWYWEjIaFgO+r+dQSkuqgJ1CdMTtrvHsA==} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@20.4.3': + resolution: {integrity: sha512-W5VQKZ7fdJ1X3Tko+h87YZaqRMGN1KvQKXyCM8xFdxzMIf1KCZgN4uLz3osLB1zsFcVS4ZswHY64LI26/9ACag==} + engines: {node: '>=v18'} + + '@commitlint/lint@20.4.3': + resolution: {integrity: sha512-CYOXL23e+nRKij81+d0+dymtIi7Owl9QzvblJYbEfInON/4MaETNSLFDI74LDu+YJ0ML5HZyw9Vhp9QpckwQ0A==} + engines: {node: '>=v18'} + + '@commitlint/load@20.4.3': + resolution: {integrity: sha512-3cdJOUVP+VcgHa7bhJoWS+Z8mBNXB5aLWMBu7Q7uX8PSeWDzdbrBlR33J1MGGf7r1PZDp+mPPiFktk031PgdRw==} + engines: {node: '>=v18'} + + '@commitlint/message@20.4.3': + resolution: {integrity: sha512-6akwCYrzcrFcTYz9GyUaWlhisY4lmQ3KvrnabmhoeAV8nRH4dXJAh4+EUQ3uArtxxKQkvxJS78hNX2EU3USgxQ==} + engines: {node: '>=v18'} + + '@commitlint/parse@20.4.3': + resolution: {integrity: sha512-hzC3JCo3zs3VkQ833KnGVuWjWIzR72BWZWjQM7tY/7dfKreKAm7fEsy71tIFCRtxf2RtMP2d3RLF1U9yhFSccA==} + engines: {node: '>=v18'} + + '@commitlint/read@20.4.3': + resolution: {integrity: sha512-j42OWv3L31WfnP8WquVjHZRt03w50Y/gEE8FAyih7GQTrIv2+pZ6VZ6pWLD/ml/3PO+RV2SPtRtTp/MvlTb8rQ==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@20.4.3': + resolution: {integrity: sha512-QucxcOy+00FhS9s4Uy0OyS5HeUV+hbC6OLqkTSIm6fwMdKva+OEavaCDuLtgd9akZZlsUo//XzSmPP3sLKBPog==} + engines: {node: '>=v18'} + + '@commitlint/rules@20.4.3': + resolution: {integrity: sha512-Yuosd7Grn5qiT7FovngXLyRXTMUbj9PYiSkvUgWK1B5a7+ZvrbWDS7epeUapYNYatCy/KTpPFPbgLUdE+MUrBg==} + engines: {node: '>=v18'} + + '@commitlint/to-lines@20.0.0': + resolution: {integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==} + engines: {node: '>=v18'} + + '@commitlint/top-level@20.4.3': + resolution: {integrity: sha512-qD9xfP6dFg5jQ3NMrOhG0/w5y3bBUsVGyJvXxdWEwBm8hyx4WOk3kKXw28T5czBYvyeCVJgJJ6aoJZUWDpaacQ==} + engines: {node: '>=v18'} + + '@commitlint/types@20.4.3': + resolution: {integrity: sha512-51OWa1Gi6ODOasPmfJPq6js4pZoomima4XLZZCrkldaH2V5Nb3bVhNXPeT6XV0gubbainSpTw4zi68NqAeCNCg==} + engines: {node: '>=v18'} + + '@csstools/css-calc@3.1.1': + resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.0.29': + resolution: {integrity: sha512-jx9GjkkP5YHuTmko2eWAvpPnb0mB4mGRr2U7XwVNwevm8nlpobZEVk+GNmiYMk2VuA75v+plfXWyroWKmICZXg==} + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + + '@csstools/media-query-list-parser@5.0.0': + resolution: {integrity: sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/selector-resolve-nested@4.0.0': + resolution: {integrity: sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + + '@csstools/selector-specificity@6.0.0': + resolution: {integrity: sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + + '@emnapi/core@1.8.1': + resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} + + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} + + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + + '@epic-web/invariant@1.0.0': + resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} + + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.3': + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.3': + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.3': + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.3': + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.3': + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.3': + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.3': + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@intlify/core-base@11.2.8': + resolution: {integrity: sha512-nBq6Y1tVkjIUsLsdOjDSJj4AsjvD0UG3zsg9Fyc+OivwlA/oMHSKooUy9tpKj0HqZ+NWFifweHavdljlBLTwdA==} + engines: {node: '>= 16'} + + '@intlify/message-compiler@11.2.8': + resolution: {integrity: sha512-A5n33doOjmHsBtCN421386cG1tWp5rpOjOYPNsnpjIJbQ4POF0QY2ezhZR9kr0boKwaHjbOifvyQvHj2UTrDFQ==} + engines: {node: '>= 16'} + + '@intlify/shared@11.2.8': + resolution: {integrity: sha512-l6e4NZyUgv8VyXXH4DbuucFOBmxLF56C/mqh2tvApbzl2Hrhi1aTDcuv5TKdxzfHYmpO3UB0Cz04fgDT9vszfw==} + engines: {node: '>= 16'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@keyv/bigmap@1.3.1': + resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} + engines: {node: '>= 18'} + peerDependencies: + keyv: ^5.6.0 + + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + + '@mrmlnc/readdir-enhanced@2.2.1': + resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} + engines: {node: '>=4'} + + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@1.1.3': + resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} + engines: {node: '>= 6'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@rolldown/pluginutils@1.0.0-rc.2': + resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} + + '@rolldown/pluginutils@1.0.0-rc.6': + resolution: {integrity: sha512-Y0+JT8Mi1mmW08K6HieG315XNRu4L0rkfCpA364HtytjgiqYnMYRdFPcxRl+BQQqNXzecL2S9nii+RUpO93XIA==} + + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + + '@rollup/rollup-android-arm-eabi@4.59.0': + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.59.0': + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.59.0': + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.59.0': + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.59.0': + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.59.0': + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.59.0': + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.59.0': + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.59.0': + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.59.0': + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.59.0': + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.59.0': + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.59.0': + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.59.0': + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.59.0': + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.59.0': + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.59.0': + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.59.0': + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.59.0': + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.59.0': + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.59.0': + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} + cpu: [x64] + os: [win32] + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@simple-libs/stream-utils@1.2.0': + resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} + engines: {node: '>=18'} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + + '@types/eslint@8.56.12': + resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} + + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/lodash@4.17.24': + resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} + + '@types/minimatch@6.0.0': + resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} + deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. + + '@types/mockjs@1.0.10': + resolution: {integrity: sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g==} + + '@types/node@16.18.126': + resolution: {integrity: sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==} + + '@types/node@25.3.3': + resolution: {integrity: sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==} + + '@types/nprogress@0.2.3': + resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} + + '@types/sortablejs@1.15.9': + resolution: {integrity: sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/vfile-message@2.0.0': + resolution: {integrity: sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==} + deprecated: This is a stub types definition. vfile-message provides its own type definitions, so you do not need this installed. + + '@types/vfile@3.0.2': + resolution: {integrity: sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==} + + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + + '@typescript-eslint/eslint-plugin@8.56.1': + resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.56.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.56.1': + resolution: {integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.56.1': + resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.56.1': + resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.56.1': + resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.56.1': + resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/types@8.56.1': + resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.56.1': + resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.56.1': + resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/visitor-keys@8.56.1': + resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.11.1': + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + cpu: [x64] + os: [win32] + + '@vitejs/plugin-vue-jsx@5.1.4': + resolution: {integrity: sha512-70LmoVk9riR7qc4W2CpjsbNMWTPnuZb9dpFKX1emru0yP57nsc9k8nhLA6U93ngQapv5VDIUq2JatNfLbBIkrA==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@6.0.4': + resolution: {integrity: sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vue: ^3.2.25 + + '@volar/language-core@2.4.28': + resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} + + '@volar/source-map@2.4.28': + resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} + + '@volar/typescript@2.4.28': + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + + '@vue-macros/common@3.1.2': + resolution: {integrity: sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==} + engines: {node: '>=20.19.0'} + peerDependencies: + vue: ^2.7.0 || ^3.2.25 + peerDependenciesMeta: + vue: + optional: true + + '@vue/babel-helper-vue-transform-on@2.0.1': + resolution: {integrity: sha512-uZ66EaFbnnZSYqYEyplWvn46GhZ1KuYSThdT68p+am7MgBNbQ3hphTL9L+xSIsWkdktwhPYLwPgVWqo96jDdRA==} + + '@vue/babel-plugin-jsx@2.0.1': + resolution: {integrity: sha512-a8CaLQjD/s4PVdhrLD/zT574ZNPnZBOY+IhdtKWRB4HRZ0I2tXBi5ne7d9eCfaYwp5gU5+4KIyFTV1W1YL9xZA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@2.0.1': + resolution: {integrity: sha512-ybwgIuRGRRBhOU37GImDoWQoz+TlSqap65qVI6iwg/J7FfLTLmMf97TS7xQH9I7Qtr/gp161kYVdhr1ZMraSYQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.5.29': + resolution: {integrity: sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==} + + '@vue/compiler-dom@3.5.29': + resolution: {integrity: sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==} + + '@vue/compiler-sfc@3.5.29': + resolution: {integrity: sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==} + + '@vue/compiler-ssr@3.5.29': + resolution: {integrity: sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/devtools-api@7.7.9': + resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==} + + '@vue/devtools-api@8.0.7': + resolution: {integrity: sha512-tc1TXAxclsn55JblLkFVcIRG7MeSJC4fWsPjfM7qu/IcmPUYnQ5Q8vzWwBpyDY24ZjmZTUCCwjRSNbx58IhlAA==} + + '@vue/devtools-kit@7.7.9': + resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==} + + '@vue/devtools-kit@8.0.7': + resolution: {integrity: sha512-H6esJGHGl5q0E9iV3m2EoBQHJ+V83WMW83A0/+Fn95eZ2iIvdsq4+UCS6yT/Fdd4cGZSchx/MdWDreM3WqMsDw==} + + '@vue/devtools-shared@7.7.9': + resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} + + '@vue/devtools-shared@8.0.7': + resolution: {integrity: sha512-CgAb9oJH5NUmbQRdYDj/1zMiaICYSLtm+B1kxcP72LBrifGAjUmt8bx52dDH1gWRPlQgxGPqpAMKavzVirAEhA==} + + '@vue/language-core@3.2.5': + resolution: {integrity: sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g==} + + '@vue/reactivity@3.5.29': + resolution: {integrity: sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==} + + '@vue/runtime-core@3.5.29': + resolution: {integrity: sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==} + + '@vue/runtime-dom@3.5.29': + resolution: {integrity: sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==} + + '@vue/server-renderer@3.5.29': + resolution: {integrity: sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==} + peerDependencies: + vue: 3.5.29 + + '@vue/shared@3.5.29': + resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==} + + '@vueuse/core@14.2.1': + resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} + peerDependencies: + vue: ^3.5.0 + + '@vueuse/metadata@14.2.1': + resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} + + '@vueuse/shared@14.2.1': + resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} + peerDependencies: + vue: ^3.5.0 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + + alien-signals@3.1.2: + resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} + + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} + engines: {node: '>=18'} + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + + arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + + arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-find-index@1.0.2: + resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} + engines: {node: '>=0.10.0'} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} + + array-union@1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + + array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + + array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + + ast-kit@2.2.0: + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} + engines: {node: '>=20.19.0'} + + ast-walker-scope@0.8.3: + resolution: {integrity: sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==} + engines: {node: '>=20.19.0'} + + astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + autoprefixer@9.8.8: + resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} + hasBin: true + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axios@1.13.6: + resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} + + b-tween@0.3.3: + resolution: {integrity: sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==} + + b-validate@1.5.3: + resolution: {integrity: sha512-iCvCkGFskbaYtfQ0a3GmcQCHl/Sv1GufXFGuUQ+FE+WJa7A/espLOuFIn09B944V8/ImPj71T4+rTASxO2PAuA==} + + bail@1.0.5: + resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + + baseline-browser-mapping@2.10.0: + resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==} + engines: {node: '>=6.0.0'} + hasBin: true + + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@5.0.4: + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + engines: {node: 18 || 20 || >=22} + + braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + + cacheable@2.3.3: + resolution: {integrity: sha512-iffYMX4zxKp54evOH27fm92hs+DeC1DhXmNVN8Tr94M/iZIV42dqTHSR2Ik4TOSPyOAwKr7Yu3rN9ALoLkbWyQ==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + + caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + + caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + + callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-keys@4.2.0: + resolution: {integrity: sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==} + engines: {node: '>=4'} + + camelcase@4.1.0: + resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} + engines: {node: '>=4'} + + caniuse-lite@1.0.30001776: + resolution: {integrity: sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw==} + + ccount@1.1.0: + resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + character-entities-html4@1.1.4: + resolution: {integrity: sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==} + + character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + + character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + + character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} + engines: {node: '>=20'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + + clone-regexp@1.0.1: + resolution: {integrity: sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==} + engines: {node: '>=0.10.0'} + + collapse-white-space@1.0.6: + resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} + + collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + + compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + + confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + conventional-changelog-angular@8.2.0: + resolution: {integrity: sha512-4YB1zEXqB17oBI8yRsAs1T+ZhbdsOgJqkl6Trz+GXt/eKf1e4jnA0oW+sOd9BEENzEViuNW0DNoFFjSf3CeC5Q==} + engines: {node: '>=18'} + + conventional-changelog-conventionalcommits@9.2.0: + resolution: {integrity: sha512-fCf+ODjseueTV09wVBoC0HXLi3OyuBJ+HfE3L63Khxqnr99f9nUcnQh3a15lCWHlGLihyZShW/mVVkBagr9JvQ==} + engines: {node: '>=18'} + + conventional-commits-parser@6.3.0: + resolution: {integrity: sha512-RfOq/Cqy9xV9bOA8N+ZH6DlrDR+5S3Mi0B5kACEjESpE+AviIpAptx9a9cFpWCCvgRtWT+0BbUw+e1BZfts9jg==} + engines: {node: '>=18'} + hasBin: true + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} + + copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + + cosmiconfig-typescript-loader@6.2.0: + resolution: {integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==} + engines: {node: '>=v18'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=9' + typescript: '>=5' + + cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + + cosmiconfig@9.0.1: + resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-env@10.1.0: + resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} + engines: {node: '>=20'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-functions-list@3.3.3: + resolution: {integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==} + engines: {node: '>=12'} + + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + currently-unhandled@0.4.1: + resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} + engines: {node: '>=0.10.0'} + + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + decode-uri-component@0.4.1: + resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==} + engines: {node: '>=14.16'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + + define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + + define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dir-glob@2.2.2: + resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} + engines: {node: '>=4'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + echarts@6.0.0: + resolution: {integrity: sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==} + + electron-to-chromium@1.5.307: + resolution: {integrity: sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + entities@1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-airbnb-base@15.0.0: + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-import-context@0.1.9: + resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + peerDependencies: + unrs-resolver: ^1.0.0 + peerDependenciesMeta: + unrs-resolver: + optional: true + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@4.4.4: + resolution: {integrity: sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==} + engines: {node: ^16.17.0 || >=18.6.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-prettier@5.5.5: + resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-vue@10.8.0: + resolution: {integrity: sha512-f1J/tcbnrpgC8suPN5AtdJ5MQjuXbSU9pGRSSYAuF3SHoiYCOdEX6O22pLaRyLHXvDcOe+O5ENgc1owQ587agA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + '@typescript-eslint/parser': ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + vue-eslint-parser: ^10.0.0 + peerDependenciesMeta: + '@stylistic/eslint-plugin': + optional: true + '@typescript-eslint/parser': + optional: true + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-scope@9.1.1: + resolution: {integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + espree@11.1.1: + resolution: {integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + + execall@1.0.0: + resolution: {integrity: sha512-/J0Q8CvOvlAdpvhfkD/WnTQ4H1eU0exze2nFGPj/RSC7jpQ0NkKe2r28T5eMkhEEs+fzepMZNy1kVRKNlC04nQ==} + engines: {node: '>=0.10.0'} + + expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@2.2.7: + resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} + engines: {node: '>=4.0.0'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@11.1.2: + resolution: {integrity: sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==} + + file-entry-cache@4.0.0: + resolution: {integrity: sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA==} + engines: {node: '>=4'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@5.1.0: + resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} + engines: {node: '>=14.16'} + + find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@2.0.1: + resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} + engines: {node: '>=4'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat-cache@6.1.20: + resolution: {integrity: sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==} + + flatted@2.0.2: + resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} + + flatted@3.3.4: + resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stdin@6.0.0: + resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} + engines: {node: '>=4'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.13.6: + resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + + glob-parent@3.1.0: + resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.3.0: + resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@16.1.1: + resolution: {integrity: sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg==} + engines: {node: '>=20'} + + globby@9.2.0: + resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==} + engines: {node: '>=6'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + + gonzales-pe@4.3.0: + resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} + engines: {node: '>=0.6.0'} + hasBin: true + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-flag@5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + + has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + + has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + + has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + + hashery@1.5.0: + resolution: {integrity: sha512-nhQ6ExaOIqti2FDWoEMWARUqIKyjr2VcZzXShrI+A3zpeiuPWzx6iPftt44LhP74E5sW36B75N6VHbvRtpvO6Q==} + engines: {node: '>=20'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + hookified@1.15.1: + resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + html-tags@2.0.0: + resolution: {integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==} + engines: {node: '>=4'} + + html-tags@5.1.0: + resolution: {integrity: sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==} + engines: {node: '>=20.10'} + + htmlparser2@3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-lazy@3.1.0: + resolution: {integrity: sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==} + engines: {node: '>=6'} + + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@3.2.0: + resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} + engines: {node: '>=4'} + + indexes-of@1.0.1: + resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + install@0.13.0: + resolution: {integrity: sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==} + engines: {node: '>= 0.10'} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + + is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + + is-alphanumeric@1.0.0: + resolution: {integrity: sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==} + engines: {node: '>=0.10.0'} + + is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.4: + resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + + is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + + is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + + is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + engines: {node: '>=18'} + + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + + is-glob@3.1.0: + resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-supported-regexp-flag@1.0.1: + resolution: {integrity: sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==} + engines: {node: '>=0.10.0'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} + + is-whitespace-character@1.0.4: + resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-word-character@1.0.4: + resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} + + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + hasBin: true + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + keyv@5.6.0: + resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + known-css-properties@0.11.0: + resolution: {integrity: sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w==} + + less@4.5.1: + resolution: {integrity: sha512-UKgI3/KON4u6ngSsnDADsUERqhZknsVZbnuzlRZXLQCmfC/MDld42fTydUE9B+Mla1AL6SJ/Pp6SlEFi/AVGfw==} + engines: {node: '>=14'} + hasBin: true + + leven@2.1.0: + resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==} + engines: {node: '>=0.10.0'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@16.3.2: + resolution: {integrity: sha512-xKqhC2AeXLwiAHXguxBjuChoTTWFC6Pees0SHPwOpwlvI3BH7ZADFPddAdN3pgo3aiKgPUx/bxE78JfUnxQnlg==} + engines: {node: '>=20.17'} + hasBin: true + + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} + engines: {node: '>=20.0.0'} + + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + + locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + + log-symbols@2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + longest-streak@2.0.4: + resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} + + loud-rejection@1.6.0: + resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} + engines: {node: '>=0.10.0'} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string-ast@1.0.3: + resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==} + engines: {node: '>=20.19.0'} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@2.0.0: + resolution: {integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==} + engines: {node: '>=4'} + + map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + + markdown-escapes@1.0.4: + resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} + + markdown-table@1.1.3: + resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + + mathml-tag-names@4.0.0: + resolution: {integrity: sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==} + + mdast-util-compact@1.0.4: + resolution: {integrity: sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + + meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + meow@14.1.0: + resolution: {integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==} + engines: {node: '>=20'} + + meow@5.0.0: + resolution: {integrity: sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==} + engines: {node: '>=6'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimist-options@3.0.2: + resolution: {integrity: sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==} + engines: {node: '>= 4'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + + mockjs@1.1.0: + resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} + hasBin: true + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + + node-releases@2.0.36: + resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-selector@0.2.0: + resolution: {integrity: sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==} + + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + num2fraction@1.2.2: + resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} + + number-precision@1.6.0: + resolution: {integrity: sha512-05OLPgbgmnixJw+VvEh18yNPUo3iyp4BEWJcrLu4X9W05KmMifN7Mu5exYvQXqxxeNWhvIF+j3Rij+HmddM/hQ==} + + object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@1.2.2: + resolution: {integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-dirname@1.0.2: + resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + + picocolors@0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pinia@3.0.4: + resolution: {integrity: sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==} + peerDependencies: + typescript: '>=4.5.0' + vue: ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + + pnpm@10.30.3: + resolution: {integrity: sha512-yWHR4KLY41TsqlFmuCJRZmi39Ey1vZUSLVkN2Bki9gb1RzttI+xKW+Bef80Y6EiNR9l4u+mBhy8RRdBumnQAFw==} + engines: {node: '>=18.12'} + hasBin: true + + posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-html@0.36.0: + resolution: {integrity: sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==} + peerDependencies: + postcss: '>=5.0.0' + postcss-syntax: '>=0.36.0' + + postcss-html@1.8.1: + resolution: {integrity: sha512-OLF6P7qctfAWayOhLpcVnTGqVeJzu2W3WpIYelfz2+JV5oGxfkcEvweN9U4XpeqE0P98dcD9ssusGwlF0TK0uQ==} + engines: {node: ^12 || >=14} + + postcss-jsx@0.36.4: + resolution: {integrity: sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==} + peerDependencies: + postcss: '>=5.0.0' + postcss-syntax: '>=0.36.0' + + postcss-less@3.1.4: + resolution: {integrity: sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==} + engines: {node: '>=6.14.4'} + + postcss-markdown@0.36.0: + resolution: {integrity: sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ==} + peerDependencies: + postcss: '>=5.0.0' + postcss-syntax: '>=0.36.0' + + postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + + postcss-reporter@6.0.1: + resolution: {integrity: sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==} + engines: {node: '>=6'} + + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + + postcss-safe-parser@4.0.2: + resolution: {integrity: sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==} + engines: {node: '>=6.0.0'} + + postcss-safe-parser@6.0.0: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + + postcss-sass@0.3.5: + resolution: {integrity: sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==} + + postcss-scss@2.1.1: + resolution: {integrity: sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==} + engines: {node: '>=6.0.0'} + + postcss-selector-parser@3.1.2: + resolution: {integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==} + engines: {node: '>=8'} + + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} + engines: {node: '>=4'} + + postcss-sorting@4.1.0: + resolution: {integrity: sha512-r4T2oQd1giURJdHQ/RMb72dKZCuLOdWx2B/XhXN1Y1ZdnwXsKH896Qz6vD4tFy9xSjpKNYhlZoJmWyhH/7JUQw==} + engines: {node: '>=6.14.3'} + + postcss-sorting@9.1.0: + resolution: {integrity: sha512-Mn8KJ45HNNG6JBpBizXcyf6LqY/qyqetGcou/nprDnFwBFBLGj0j/sNKV2lj2KMOVOwdXu14aEzqJv8CIV6e8g==} + peerDependencies: + postcss: ^8.4.20 + + postcss-syntax@0.36.2: + resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==} + peerDependencies: + postcss: '>=5.0.0' + postcss-html: '*' + postcss-jsx: '*' + postcss-less: '*' + postcss-markdown: '*' + postcss-scss: '*' + peerDependenciesMeta: + postcss-html: + optional: true + postcss-jsx: + optional: true + postcss-less: + optional: true + postcss-markdown: + optional: true + postcss-scss: + optional: true + + postcss-value-parser@3.3.1: + resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + engines: {node: ^10 || ^12 || >=14} + + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} + engines: {node: '>=6.0.0'} + + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} + engines: {node: '>=14'} + hasBin: true + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qified@0.6.0: + resolution: {integrity: sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==} + engines: {node: '>=20'} + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + query-string@9.3.1: + resolution: {integrity: sha512-5fBfMOcDi5SA9qj5jZhWAcTtDfKF5WFdd2uD9nVNlbxVv1baq65aALy6qofpNEGELHvisjjasxQp7BlM9gvMzw==} + engines: {node: '>=18'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@1.1.0: + resolution: {integrity: sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==} + engines: {node: '>=4'} + + read-pkg-up@3.0.0: + resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} + engines: {node: '>=4'} + + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + + redent@2.0.0: + resolution: {integrity: sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==} + engines: {node: '>=4'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + remark-parse@6.0.3: + resolution: {integrity: sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==} + + remark-stringify@6.0.4: + resolution: {integrity: sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==} + + remark@10.0.1: + resolution: {integrity: sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==} + + repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + replace-ext@1.0.0: + resolution: {integrity: sha512-vuNYXC7gG7IeVNBC1xUllqCcZKRbJoSPOBhnTEcAIiKCsbuef6zO3F0Rve3isPMMoNoQRWjQwbAgAjHUHniyEA==} + engines: {node: '>= 0.10'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup-plugin-visualizer@7.0.1: + resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==} + engines: {node: '>=22'} + hasBin: true + peerDependencies: + rolldown: 1.x || ^1.0.0-beta || ^1.0.0-rc + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true + + rollup@2.80.0: + resolution: {integrity: sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==} + engines: {node: '>=10.0.0'} + hasBin: true + + rollup@4.59.0: + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.5.0: + resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} + engines: {node: '>=11.0.0'} + + scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.4: + resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} + + slash@2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + engines: {node: '>=18'} + + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} + + snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + + snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + + snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + + sortablejs@1.15.7: + resolution: {integrity: sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + + source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.23: + resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + specificity@0.4.1: + resolution: {integrity: sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==} + hasBin: true + + split-on-first@3.0.0: + resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} + engines: {node: '>=12'} + + split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stable-hash-x@0.2.0: + resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} + engines: {node: '>=12.0.0'} + + state-toggle@1.0.3: + resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} + + static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.2.0: + resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} + engines: {node: '>=20'} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@1.3.2: + resolution: {integrity: sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-indent@2.0.0: + resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} + engines: {node: '>=4'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + style-search@0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + + stylelint-config-html@1.1.0: + resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} + engines: {node: ^12 || >=14} + peerDependencies: + postcss-html: ^1.0.0 + stylelint: '>=14.0.0' + + stylelint-config-prettier@9.0.5: + resolution: {integrity: sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==} + engines: {node: '>= 12'} + hasBin: true + peerDependencies: + stylelint: '>= 11.x < 15' + + stylelint-config-rational-order@0.1.2: + resolution: {integrity: sha512-Qo7ZQaihCwTqijfZg4sbdQQHtugOX/B1/fYh018EiDZHW+lkqH9uHOnsDwDPGZrYJuB6CoyI7MZh2ecw2dOkew==} + + stylelint-config-recommended-vue@1.6.1: + resolution: {integrity: sha512-lLW7hTIMBiTfjenGuDq2kyHA6fBWd/+Df7MO4/AWOxiFeXP9clbpKgg27kHfwA3H7UNMGC7aeP3mNlZB5LMmEQ==} + engines: {node: ^12 || >=14} + peerDependencies: + postcss-html: ^1.0.0 + stylelint: '>=14.0.0' + + stylelint-config-recommended@18.0.0: + resolution: {integrity: sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^17.0.0 + + stylelint-config-standard@40.0.0: + resolution: {integrity: sha512-EznGJxOUhtWck2r6dJpbgAdPATIzvpLdK9+i5qPd4Lx70es66TkBPljSg4wN3Qnc6c4h2n+WbUrUynQ3fanjHw==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^17.0.0 + + stylelint-order@2.2.1: + resolution: {integrity: sha512-019KBV9j8qp1MfBjJuotse6MgaZqGVtXMc91GU9MsS9Feb+jYUvUU3Z8XiClqPdqJZQ0ryXQJGg3U3PcEjXwfg==} + engines: {node: '>=6'} + peerDependencies: + stylelint: ^9.10.1 || ^10.0.0 + + stylelint-order@7.0.1: + resolution: {integrity: sha512-GWPei1zBVDDjxM+/BmcSCiOcHNd8rSqW6FUZtqQGlTRpD0Z5nSzspzWD8rtKif5KPdzUG68DApKEV/y/I9VbTw==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^16.18.0 || ^17.0.0 + + stylelint@17.4.0: + resolution: {integrity: sha512-3kQ2/cHv3Zt8OBg+h2B8XCx9evEABQIrv4hh3uXahGz/ZEHrTR80zxBiK2NfXNaSoyBzxO1pjsz1Vhdzwn5XSw==} + engines: {node: '>=20.19.0'} + hasBin: true + + stylelint@9.10.1: + resolution: {integrity: sha512-9UiHxZhOAHEgeQ7oLGwrwoDR8vclBKlSX7r4fH0iuu0SfPwFaLkb1c7Q2j1cqg9P7IDXeAV2TvQML/fRQzGBBQ==} + engines: {node: '>=6'} + hasBin: true + + sugarss@2.0.0: + resolution: {integrity: sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==} + + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-hyperlinks@4.4.0: + resolution: {integrity: sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==} + engines: {node: '>=20'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + + synckit@0.11.12: + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + table@5.4.6: + resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} + engines: {node: '>=6.0.0'} + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + + to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + + trim-newlines@2.0.0: + resolution: {integrity: sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==} + engines: {node: '>=4'} + + trim-trailing-lines@1.1.4: + resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} + + trim@0.0.1: + resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} + deprecated: Use String.prototype.trim() instead + + trough@1.0.5: + resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + + ts-api-utils@2.4.0: + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + + unherit@1.1.3: + resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} + + unicorn-magic@0.4.0: + resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} + engines: {node: '>=20'} + + unified@7.1.0: + resolution: {integrity: sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==} + + union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + + uniq@1.0.1: + resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} + + unist-util-find-all-after@1.0.5: + resolution: {integrity: sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw==} + + unist-util-is@3.0.0: + resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==} + + unist-util-remove-position@1.1.4: + resolution: {integrity: sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==} + + unist-util-stringify-position@1.1.2: + resolution: {integrity: sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@2.1.2: + resolution: {integrity: sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==} + + unist-util-visit@1.4.1: + resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unplugin-utils@0.3.1: + resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} + engines: {node: '>=20.19.0'} + + unplugin-vue-components@31.0.0: + resolution: {integrity: sha512-4ULwfTZTLuWJ7+S9P7TrcStYLsSRkk6vy2jt/WTfgUEUb0nW9//xxmrfhyHUEVpZ2UKRRwfRb8Yy15PDbVZf+Q==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@nuxt/kit': ^3.2.2 || ^4.0.0 + vue: ^3.0.0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + unplugin@2.3.11: + resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} + engines: {node: '>=18.12.0'} + + unplugin@3.0.0: + resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} + engines: {node: ^20.19.0 || >=22.12.0} + + unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + + unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + + use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vfile-location@2.0.6: + resolution: {integrity: sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==} + + vfile-message@1.1.1: + resolution: {integrity: sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@3.0.1: + resolution: {integrity: sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==} + + vite-plugin-compression@0.5.1: + resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} + peerDependencies: + vite: '>=2.0.0' + + vite-plugin-eslint@1.8.1: + resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} + peerDependencies: + eslint: '>=7' + vite: '>=2' + + vite-svg-loader@4.0.0: + resolution: {integrity: sha512-0MMf1yzzSYlV4MGePsLVAOqXsbF5IVxbn4EEzqRnWxTQl8BJg/cfwIzfQNmNQxZp5XXwd4kyRKF1LytuHZTnqA==} + + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + vue-echarts@8.0.1: + resolution: {integrity: sha512-23rJTFLu1OUEGRWjJGmdGt8fP+8+ja1gVgzMYPIPaHWpXegcO1viIAaeu2H4QHESlVeHzUAHIxKXGrwjsyXAaA==} + peerDependencies: + echarts: ^6.0.0 + vue: ^3.3.0 + + vue-eslint-parser@10.4.0: + resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + + vue-i18n@11.2.8: + resolution: {integrity: sha512-vJ123v/PXCZntd6Qj5Jumy7UBmIuE92VrtdX+AXr+1WzdBHojiBxnAxdfctUFL+/JIN+VQH4BhsfTtiGsvVObg==} + engines: {node: '>= 16'} + peerDependencies: + vue: ^3.0.0 + + vue-router@5.0.3: + resolution: {integrity: sha512-nG1c7aAFac7NYj8Hluo68WyWfc41xkEjaR0ViLHCa3oDvTQ/nIuLJlXJX1NUPw/DXzx/8+OKMng045HHQKQKWw==} + peerDependencies: + '@pinia/colada': '>=0.21.2' + '@vue/compiler-sfc': ^3.5.17 + pinia: ^3.0.4 + vue: ^3.5.0 + peerDependenciesMeta: + '@pinia/colada': + optional: true + '@vue/compiler-sfc': + optional: true + pinia: + optional: true + + vue-tsc@3.2.5: + resolution: {integrity: sha512-/htfTCMluQ+P2FISGAooul8kO4JMheOTCbCy4M6dYnYYjqLe3BExZudAua6MSIKSFYQtFOYAll7XobYwcpokGA==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.5.29: + resolution: {integrity: sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@7.0.1: + resolution: {integrity: sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==} + engines: {node: ^20.17.0 || >=22.9.0} + + write@1.0.3: + resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} + engines: {node: '>=4'} + + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + engines: {node: '>=20'} + + x-is-string@0.1.0: + resolution: {integrity: sha512-GojqklwG8gpzOVEVki5KudKNoq7MbbjYZCbyWzEz7tyPA7eleiE0+ePwOWQQRb5fm86rD3S8Tc0tSFf3AOv50w==} + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@10.1.0: + resolution: {integrity: sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yargs@18.0.0: + resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zrender@6.0.0: + resolution: {integrity: sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==} + +snapshots: + + '@arco-design/color@0.4.0': + dependencies: + color: 3.2.1 + + '@arco-design/web-vue@2.57.0(vue@3.5.29(typescript@5.9.3))': + dependencies: + '@arco-design/color': 0.4.0 + b-tween: 0.3.3 + b-validate: 1.5.3 + compute-scroll-into-view: 1.0.20 + dayjs: 1.11.19 + number-precision: 1.6.0 + resize-observer-polyfill: 1.5.1 + scroll-into-view-if-needed: 2.2.31 + vue: 3.5.29(typescript@5.9.3) + + '@arco-plugins/vite-vue@1.4.6': + dependencies: + '@babel/generator': 7.29.1 + '@babel/helper-module-imports': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@types/node': 16.18.126 + transitivePeerDependencies: + - supports-color + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.0': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.29.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-plugin-utils@7.28.6': {} + + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + + '@babel/parser@7.29.0': + dependencies: + '@babel/types': 7.29.0 + + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@cacheable/memory@2.0.8': + dependencies: + '@cacheable/utils': 2.4.0 + '@keyv/bigmap': 1.3.1(keyv@5.6.0) + hookified: 1.15.1 + keyv: 5.6.0 + + '@cacheable/utils@2.4.0': + dependencies: + hashery: 1.5.0 + keyv: 5.6.0 + + '@commitlint/cli@20.4.3(@types/node@25.3.3)(typescript@5.9.3)': + dependencies: + '@commitlint/format': 20.4.3 + '@commitlint/lint': 20.4.3 + '@commitlint/load': 20.4.3(@types/node@25.3.3)(typescript@5.9.3) + '@commitlint/read': 20.4.3 + '@commitlint/types': 20.4.3 + tinyexec: 1.0.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/config-conventional@20.4.3': + dependencies: + '@commitlint/types': 20.4.3 + conventional-changelog-conventionalcommits: 9.2.0 + + '@commitlint/config-validator@20.4.3': + dependencies: + '@commitlint/types': 20.4.3 + ajv: 8.18.0 + + '@commitlint/ensure@20.4.3': + dependencies: + '@commitlint/types': 20.4.3 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@20.0.0': {} + + '@commitlint/format@20.4.3': + dependencies: + '@commitlint/types': 20.4.3 + picocolors: 1.1.1 + + '@commitlint/is-ignored@20.4.3': + dependencies: + '@commitlint/types': 20.4.3 + semver: 7.7.4 + + '@commitlint/lint@20.4.3': + dependencies: + '@commitlint/is-ignored': 20.4.3 + '@commitlint/parse': 20.4.3 + '@commitlint/rules': 20.4.3 + '@commitlint/types': 20.4.3 + + '@commitlint/load@20.4.3(@types/node@25.3.3)(typescript@5.9.3)': + dependencies: + '@commitlint/config-validator': 20.4.3 + '@commitlint/execute-rule': 20.0.0 + '@commitlint/resolve-extends': 20.4.3 + '@commitlint/types': 20.4.3 + cosmiconfig: 9.0.1(typescript@5.9.3) + cosmiconfig-typescript-loader: 6.2.0(@types/node@25.3.3)(cosmiconfig@9.0.1(typescript@5.9.3))(typescript@5.9.3) + is-plain-obj: 4.1.0 + lodash.mergewith: 4.6.2 + picocolors: 1.1.1 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@20.4.3': {} + + '@commitlint/parse@20.4.3': + dependencies: + '@commitlint/types': 20.4.3 + conventional-changelog-angular: 8.2.0 + conventional-commits-parser: 6.3.0 + + '@commitlint/read@20.4.3': + dependencies: + '@commitlint/top-level': 20.4.3 + '@commitlint/types': 20.4.3 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + tinyexec: 1.0.2 + + '@commitlint/resolve-extends@20.4.3': + dependencies: + '@commitlint/config-validator': 20.4.3 + '@commitlint/types': 20.4.3 + global-directory: 4.0.1 + import-meta-resolve: 4.2.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/rules@20.4.3': + dependencies: + '@commitlint/ensure': 20.4.3 + '@commitlint/message': 20.4.3 + '@commitlint/to-lines': 20.0.0 + '@commitlint/types': 20.4.3 + + '@commitlint/to-lines@20.0.0': {} + + '@commitlint/top-level@20.4.3': + dependencies: + escalade: 3.2.0 + + '@commitlint/types@20.4.3': + dependencies: + conventional-commits-parser: 6.3.0 + picocolors: 1.1.1 + + '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.0.29': {} + + '@csstools/css-tokenizer@4.0.0': {} + + '@csstools/media-query-list-parser@5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/selector-resolve-nested@4.0.0(postcss-selector-parser@7.1.1)': + dependencies: + postcss-selector-parser: 7.1.1 + + '@csstools/selector-specificity@6.0.0(postcss-selector-parser@7.1.1)': + dependencies: + postcss-selector-parser: 7.1.1 + + '@emnapi/core@1.8.1': + dependencies: + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.8.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.1.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@epic-web/invariant@1.0.0': {} + + '@esbuild/aix-ppc64@0.27.3': + optional: true + + '@esbuild/android-arm64@0.27.3': + optional: true + + '@esbuild/android-arm@0.27.3': + optional: true + + '@esbuild/android-x64@0.27.3': + optional: true + + '@esbuild/darwin-arm64@0.27.3': + optional: true + + '@esbuild/darwin-x64@0.27.3': + optional: true + + '@esbuild/freebsd-arm64@0.27.3': + optional: true + + '@esbuild/freebsd-x64@0.27.3': + optional: true + + '@esbuild/linux-arm64@0.27.3': + optional: true + + '@esbuild/linux-arm@0.27.3': + optional: true + + '@esbuild/linux-ia32@0.27.3': + optional: true + + '@esbuild/linux-loong64@0.27.3': + optional: true + + '@esbuild/linux-mips64el@0.27.3': + optional: true + + '@esbuild/linux-ppc64@0.27.3': + optional: true + + '@esbuild/linux-riscv64@0.27.3': + optional: true + + '@esbuild/linux-s390x@0.27.3': + optional: true + + '@esbuild/linux-x64@0.27.3': + optional: true + + '@esbuild/netbsd-arm64@0.27.3': + optional: true + + '@esbuild/netbsd-x64@0.27.3': + optional: true + + '@esbuild/openbsd-arm64@0.27.3': + optional: true + + '@esbuild/openbsd-x64@0.27.3': + optional: true + + '@esbuild/openharmony-arm64@0.27.3': + optional: true + + '@esbuild/sunos-x64@0.27.3': + optional: true + + '@esbuild/win32-arm64@0.27.3': + optional: true + + '@esbuild/win32-ia32@0.27.3': + optional: true + + '@esbuild/win32-x64@0.27.3': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@8.57.0)': + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.14.0 + debug: 4.4.3 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.0': {} + + '@humanwhocodes/config-array@0.11.14': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@intlify/core-base@11.2.8': + dependencies: + '@intlify/message-compiler': 11.2.8 + '@intlify/shared': 11.2.8 + + '@intlify/message-compiler@11.2.8': + dependencies: + '@intlify/shared': 11.2.8 + source-map-js: 1.2.1 + + '@intlify/shared@11.2.8': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@keyv/bigmap@1.3.1(keyv@5.6.0)': + dependencies: + hashery: 1.5.0 + hookified: 1.15.1 + keyv: 5.6.0 + + '@keyv/serialize@1.1.1': {} + + '@mrmlnc/readdir-enhanced@2.2.1': + dependencies: + call-me-maybe: 1.0.2 + glob-to-regexp: 0.3.0 + + '@napi-rs/wasm-runtime@0.2.12': + dependencies: + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@1.1.3': {} + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@pkgr/core@0.2.9': {} + + '@rolldown/pluginutils@1.0.0-rc.2': {} + + '@rolldown/pluginutils@1.0.0-rc.6': {} + + '@rollup/pluginutils@4.2.1': + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + + '@rollup/rollup-android-arm-eabi@4.59.0': + optional: true + + '@rollup/rollup-android-arm64@4.59.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.59.0': + optional: true + + '@rollup/rollup-darwin-x64@4.59.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.59.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.59.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.59.0': + optional: true + + '@rollup/rollup-openbsd-x64@4.59.0': + optional: true + + '@rollup/rollup-openharmony-arm64@4.59.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.59.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.59.0': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.59.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.59.0': + optional: true + + '@rtsao/scc@1.1.0': {} + + '@simple-libs/stream-utils@1.2.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@trysound/sax@0.2.0': {} + + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/eslint@8.56.12': + dependencies: + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + + '@types/esrecurse@4.3.1': {} + + '@types/estree@1.0.8': {} + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 6.0.0 + '@types/node': 25.3.3 + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/lodash@4.17.24': {} + + '@types/minimatch@6.0.0': + dependencies: + minimatch: 10.2.4 + + '@types/mockjs@1.0.10': {} + + '@types/node@16.18.126': {} + + '@types/node@25.3.3': + dependencies: + undici-types: 7.18.2 + + '@types/nprogress@0.2.3': {} + + '@types/sortablejs@1.15.9': {} + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@types/vfile-message@2.0.0': + dependencies: + vfile-message: 4.0.3 + + '@types/vfile@3.0.2': + dependencies: + '@types/node': 25.3.3 + '@types/unist': 2.0.11 + '@types/vfile-message': 2.0.0 + + '@types/web-bluetooth@0.0.21': {} + + '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.56.1(eslint@8.57.0)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/type-utils': 8.56.1(eslint@8.57.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@8.57.0)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.1 + eslint: 8.57.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.56.1(eslint@8.57.0)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.1 + debug: 4.4.3 + eslint: 8.57.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.56.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.56.1': + dependencies: + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/visitor-keys': 8.56.1 + + '@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.56.1(eslint@8.57.0)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@8.57.0)(typescript@5.9.3) + debug: 4.4.3 + eslint: 8.57.0 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.56.1': {} + + '@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.56.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/visitor-keys': 8.56.1 + debug: 4.4.3 + minimatch: 10.2.4 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.56.1(eslint@8.57.0)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.0) + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + eslint: 8.57.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.56.1': + dependencies: + '@typescript-eslint/types': 8.56.1 + eslint-visitor-keys: 5.0.1 + + '@ungap/structured-clone@1.3.0': {} + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + optional: true + + '@unrs/resolver-binding-android-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + dependencies: + '@napi-rs/wasm-runtime': 0.2.12 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + optional: true + + '@vitejs/plugin-vue-jsx@5.1.4(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + '@rolldown/pluginutils': 1.0.0-rc.6 + '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0) + vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2) + vue: 3.5.29(typescript@5.9.3) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3))': + dependencies: + '@rolldown/pluginutils': 1.0.0-rc.2 + vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2) + vue: 3.5.29(typescript@5.9.3) + + '@volar/language-core@2.4.28': + dependencies: + '@volar/source-map': 2.4.28 + + '@volar/source-map@2.4.28': {} + + '@volar/typescript@2.4.28': + dependencies: + '@volar/language-core': 2.4.28 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vue-macros/common@3.1.2(vue@3.5.29(typescript@5.9.3))': + dependencies: + '@vue/compiler-sfc': 3.5.29 + ast-kit: 2.2.0 + local-pkg: 1.1.2 + magic-string-ast: 1.0.3 + unplugin-utils: 0.3.1 + optionalDependencies: + vue: 3.5.29(typescript@5.9.3) + + '@vue/babel-helper-vue-transform-on@2.0.1': {} + + '@vue/babel-plugin-jsx@2.0.1(@babel/core@7.29.0)': + dependencies: + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@vue/babel-helper-vue-transform-on': 2.0.1 + '@vue/babel-plugin-resolve-type': 2.0.1(@babel/core@7.29.0) + '@vue/shared': 3.5.29 + optionalDependencies: + '@babel/core': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@2.0.1(@babel/core@7.29.0)': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/parser': 7.29.0 + '@vue/compiler-sfc': 3.5.29 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.5.29': + dependencies: + '@babel/parser': 7.29.0 + '@vue/shared': 3.5.29 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.29': + dependencies: + '@vue/compiler-core': 3.5.29 + '@vue/shared': 3.5.29 + + '@vue/compiler-sfc@3.5.29': + dependencies: + '@babel/parser': 7.29.0 + '@vue/compiler-core': 3.5.29 + '@vue/compiler-dom': 3.5.29 + '@vue/compiler-ssr': 3.5.29 + '@vue/shared': 3.5.29 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.8 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.29': + dependencies: + '@vue/compiler-dom': 3.5.29 + '@vue/shared': 3.5.29 + + '@vue/devtools-api@6.6.4': {} + + '@vue/devtools-api@7.7.9': + dependencies: + '@vue/devtools-kit': 7.7.9 + + '@vue/devtools-api@8.0.7': + dependencies: + '@vue/devtools-kit': 8.0.7 + + '@vue/devtools-kit@7.7.9': + dependencies: + '@vue/devtools-shared': 7.7.9 + birpc: 2.9.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.6 + + '@vue/devtools-kit@8.0.7': + dependencies: + '@vue/devtools-shared': 8.0.7 + birpc: 2.9.0 + hookable: 5.5.3 + perfect-debounce: 2.1.0 + + '@vue/devtools-shared@7.7.9': + dependencies: + rfdc: 1.4.1 + + '@vue/devtools-shared@8.0.7': {} + + '@vue/language-core@3.2.5': + dependencies: + '@volar/language-core': 2.4.28 + '@vue/compiler-dom': 3.5.29 + '@vue/shared': 3.5.29 + alien-signals: 3.1.2 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + picomatch: 4.0.3 + + '@vue/reactivity@3.5.29': + dependencies: + '@vue/shared': 3.5.29 + + '@vue/runtime-core@3.5.29': + dependencies: + '@vue/reactivity': 3.5.29 + '@vue/shared': 3.5.29 + + '@vue/runtime-dom@3.5.29': + dependencies: + '@vue/reactivity': 3.5.29 + '@vue/runtime-core': 3.5.29 + '@vue/shared': 3.5.29 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.29(vue@3.5.29(typescript@5.9.3))': + dependencies: + '@vue/compiler-ssr': 3.5.29 + '@vue/shared': 3.5.29 + vue: 3.5.29(typescript@5.9.3) + + '@vue/shared@3.5.29': {} + + '@vueuse/core@14.2.1(vue@3.5.29(typescript@5.9.3))': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 14.2.1 + '@vueuse/shared': 14.2.1(vue@3.5.29(typescript@5.9.3)) + vue: 3.5.29(typescript@5.9.3) + + '@vueuse/metadata@14.2.1': {} + + '@vueuse/shared@14.2.1(vue@3.5.29(typescript@5.9.3))': + dependencies: + vue: 3.5.29(typescript@5.9.3) + + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn@8.16.0: {} + + ajv@6.14.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.18.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + alien-signals@3.1.2: {} + + ansi-escapes@7.3.0: + dependencies: + environment: 1.1.0 + + ansi-regex@4.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + arr-diff@4.0.0: {} + + arr-flatten@1.1.0: {} + + arr-union@3.1.0: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-find-index@1.0.2: {} + + array-ify@1.0.0: {} + + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array-union@1.0.2: + dependencies: + array-uniq: 1.0.3 + + array-uniq@1.0.3: {} + + array-unique@0.3.2: {} + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + arrify@1.0.1: {} + + assign-symbols@1.0.0: {} + + ast-kit@2.2.0: + dependencies: + '@babel/parser': 7.29.0 + pathe: 2.0.3 + + ast-walker-scope@0.8.3: + dependencies: + '@babel/parser': 7.29.0 + ast-kit: 2.2.0 + + astral-regex@1.0.0: {} + + astral-regex@2.0.0: {} + + async-function@1.0.0: {} + + asynckit@0.4.0: {} + + atob@2.1.2: {} + + autoprefixer@9.8.8: + dependencies: + browserslist: 4.28.1 + caniuse-lite: 1.0.30001776 + normalize-range: 0.1.2 + num2fraction: 1.2.2 + picocolors: 0.2.1 + postcss: 7.0.39 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axios@1.13.6: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + b-tween@0.3.3: {} + + b-validate@1.5.3: {} + + bail@1.0.5: {} + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + base@0.11.2: + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.1 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + + baseline-browser-mapping@2.10.0: {} + + birpc@2.9.0: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@5.0.4: + dependencies: + balanced-match: 4.0.4 + + braces@2.3.2: + 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.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.10.0 + caniuse-lite: 1.0.30001776 + electron-to-chromium: 1.5.307 + node-releases: 2.0.36 + update-browserslist-db: 1.2.3(browserslist@4.28.1) + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + cache-base@1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.1 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + + cacheable@2.3.3: + dependencies: + '@cacheable/memory': 2.0.8 + '@cacheable/utils': 2.4.0 + hookified: 1.15.1 + keyv: 5.6.0 + qified: 0.6.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + call-me-maybe@1.0.2: {} + + caller-callsite@2.0.0: + dependencies: + callsites: 2.0.0 + + caller-path@2.0.0: + dependencies: + caller-callsite: 2.0.0 + + callsites@2.0.0: {} + + callsites@3.1.0: {} + + camelcase-keys@4.2.0: + dependencies: + camelcase: 4.1.0 + map-obj: 2.0.0 + quick-lru: 1.1.0 + + camelcase@4.1.0: {} + + caniuse-lite@1.0.30001776: {} + + ccount@1.1.0: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + character-entities-html4@1.1.4: {} + + character-entities-legacy@1.1.4: {} + + character-entities@1.2.4: {} + + character-reference-invalid@1.1.4: {} + + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + + class-utils@0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@5.2.0: + dependencies: + slice-ansi: 8.0.0 + string-width: 8.2.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + + clone-regexp@1.0.1: + dependencies: + is-regexp: 1.0.0 + is-supported-regexp-flag: 1.0.1 + + collapse-white-space@1.0.6: {} + + collection-visit@1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.4 + + color@3.2.1: + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + + colord@2.9.3: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@14.0.3: {} + + commander@7.2.0: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + component-emitter@1.3.1: {} + + compute-scroll-into-view@1.0.20: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + confbox@0.2.4: {} + + confusing-browser-globals@1.0.11: {} + + consola@3.4.2: {} + + conventional-changelog-angular@8.2.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@9.2.0: + dependencies: + compare-func: 2.0.0 + + conventional-commits-parser@6.3.0: + dependencies: + '@simple-libs/stream-utils': 1.2.0 + meow: 13.2.0 + + convert-source-map@2.0.0: {} + + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + + copy-anything@4.0.5: + dependencies: + is-what: 5.5.0 + + copy-descriptor@0.1.1: {} + + cosmiconfig-typescript-loader@6.2.0(@types/node@25.3.3)(cosmiconfig@9.0.1(typescript@5.9.3))(typescript@5.9.3): + dependencies: + '@types/node': 25.3.3 + cosmiconfig: 9.0.1(typescript@5.9.3) + jiti: 2.6.1 + typescript: 5.9.3 + + cosmiconfig@5.2.1: + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.2 + parse-json: 4.0.0 + + cosmiconfig@9.0.1(typescript@5.9.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.9.3 + + cross-env@10.1.0: + dependencies: + '@epic-web/invariant': 1.0.0 + cross-spawn: 7.0.6 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-functions-list@3.3.3: {} + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + + css-what@6.2.2: {} + + cssesc@3.0.0: {} + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + csstype@3.2.3: {} + + currently-unhandled@0.4.1: + dependencies: + array-find-index: 1.0.2 + + dargs@8.1.0: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + dayjs@1.11.19: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + + decode-uri-component@0.2.2: {} + + decode-uri-component@0.4.1: {} + + deep-is@0.1.4: {} + + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@3.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + define-property@0.2.5: + dependencies: + is-descriptor: 0.1.7 + + define-property@1.0.0: + dependencies: + is-descriptor: 1.0.3 + + define-property@2.0.2: + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 + + delayed-stream@1.0.0: {} + + dir-glob@2.2.2: + dependencies: + path-type: 3.0.0 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-serializer@0.2.2: + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@1.3.1: {} + + domelementtype@2.3.0: {} + + domhandler@2.4.2: + dependencies: + domelementtype: 1.3.1 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@1.7.0: + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + echarts@6.0.0: + dependencies: + tslib: 2.3.0 + zrender: 6.0.0 + + electron-to-chromium@1.5.307: {} + + emoji-regex@10.6.0: {} + + emoji-regex@7.0.3: {} + + emoji-regex@8.0.0: {} + + entities@1.1.2: {} + + entities@2.2.0: {} + + entities@4.5.0: {} + + entities@7.0.1: {} + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.24.1: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.20 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + esbuild@0.27.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0)(eslint@8.57.0): + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.57.0 + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.56.1(eslint@8.57.0)(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@8.57.0) + object.assign: 4.1.7 + object.entries: 1.1.9 + semver: 6.3.1 + + eslint-config-prettier@10.1.8(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + + eslint-import-context@0.1.9(unrs-resolver@1.11.1): + dependencies: + get-tsconfig: 4.13.6 + stable-hash-x: 0.2.0 + optionalDependencies: + unrs-resolver: 1.11.1 + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.11 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@8.57.0): + dependencies: + debug: 4.4.3 + eslint: 8.57.0 + eslint-import-context: 0.1.9(unrs-resolver@1.11.1) + get-tsconfig: 4.13.6 + is-bun-module: 2.0.0 + stable-hash-x: 0.2.0 + tinyglobby: 0.2.15 + unrs-resolver: 1.11.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.56.1(eslint@8.57.0)(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@8.57.0) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.56.1(eslint@8.57.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@8.57.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.56.1(eslint@8.57.0)(typescript@5.9.3) + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@8.57.0) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.56.1(eslint@8.57.0)(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@8.57.0): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.56.1(eslint@8.57.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@8.57.0) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.56.1(eslint@8.57.0)(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-prettier@5.5.5(@types/eslint@8.56.12)(eslint-config-prettier@10.1.8(eslint@8.57.0))(eslint@8.57.0)(prettier@3.8.1): + dependencies: + eslint: 8.57.0 + prettier: 3.8.1 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.12 + optionalDependencies: + '@types/eslint': 8.56.12 + eslint-config-prettier: 10.1.8(eslint@8.57.0) + + eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.4.0(eslint@8.57.0)): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.0) + eslint: 8.57.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 7.1.1 + semver: 7.7.4 + vue-eslint-parser: 10.4.0(eslint@8.57.0) + xml-name-validator: 4.0.0 + optionalDependencies: + '@typescript-eslint/parser': 8.56.1(eslint@8.57.0)(typescript@5.9.3) + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-scope@9.1.1: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.8 + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@8.57.0: + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.0) + '@eslint-community/regexpp': 4.12.2 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 + ajv: 6.14.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@11.1.1: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 5.0.1 + + espree@9.6.1: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + eventemitter3@5.0.4: {} + + execall@1.0.0: + dependencies: + clone-regexp: 1.0.1 + + expand-brackets@2.1.4: + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + exsolve@1.0.8: {} + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend-shallow@3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + + extend@3.0.2: {} + + extglob@2.0.4: + 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.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@2.2.7: + dependencies: + '@mrmlnc/readdir-enhanced': 2.2.1 + '@nodelib/fs.stat': 1.1.3 + glob-parent: 3.1.0 + is-glob: 4.0.3 + merge2: 1.4.1 + micromatch: 3.1.10 + transitivePeerDependencies: + - supports-color + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.1.0: {} + + fastest-levenshtein@1.0.16: {} + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + file-entry-cache@11.1.2: + dependencies: + flat-cache: 6.1.20 + + file-entry-cache@4.0.0: + dependencies: + flat-cache: 2.0.1 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + fill-range@4.0.0: + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@5.1.0: {} + + find-up@2.1.0: + dependencies: + locate-path: 2.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@2.0.1: + dependencies: + flatted: 2.0.2 + rimraf: 2.6.3 + write: 1.0.3 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.4 + keyv: 4.5.4 + rimraf: 3.0.2 + + flat-cache@6.1.20: + dependencies: + cacheable: 2.3.3 + flatted: 3.3.4 + hookified: 1.15.1 + + flatted@2.0.2: {} + + flatted@3.3.4: {} + + follow-redirects@1.15.11: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + for-in@1.0.2: {} + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + fragment-cache@0.2.1: + dependencies: + map-cache: 0.2.2 + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + generator-function@2.0.1: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.5.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stdin@6.0.0: {} + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.13.6: + dependencies: + resolve-pkg-maps: 1.0.0 + + get-value@2.0.6: {} + + git-raw-commits@4.0.0: + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + + glob-parent@3.1.0: + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.3.0: {} + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@16.1.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + is-path-inside: 4.0.0 + slash: 5.1.0 + unicorn-magic: 0.4.0 + + globby@9.2.0: + dependencies: + '@types/glob': 7.2.0 + array-union: 1.0.2 + dir-glob: 2.2.2 + fast-glob: 2.2.7 + glob: 7.2.3 + ignore: 4.0.6 + pify: 4.0.1 + slash: 2.0.0 + transitivePeerDependencies: + - supports-color + + globjoin@0.1.4: {} + + gonzales-pe@4.3.0: + dependencies: + minimist: 1.2.8 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + has-bigints@1.1.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-flag@5.0.1: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + has-value@0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + + has-value@1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + + has-values@0.1.4: {} + + has-values@1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + + hashery@1.5.0: + dependencies: + hookified: 1.15.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hookable@5.5.3: {} + + hookified@1.15.1: {} + + hosted-git-info@2.8.9: {} + + html-tags@2.0.0: {} + + html-tags@5.1.0: {} + + htmlparser2@3.10.1: + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + husky@9.1.7: {} + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + ignore@4.0.6: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + image-size@0.5.5: + optional: true + + import-fresh@2.0.0: + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-lazy@3.1.0: {} + + import-meta-resolve@4.2.0: {} + + imurmurhash@0.1.4: {} + + indent-string@3.2.0: {} + + indexes-of@1.0.1: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@4.1.1: {} + + install@0.13.0: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + is-accessor-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-alphabetical@1.0.4: {} + + is-alphanumeric@1.0.0: {} + + is-alphanumerical@1.0.4: + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-arrayish@0.3.4: {} + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-buffer@1.1.6: {} + + is-buffer@2.0.5: {} + + is-bun-module@2.0.0: + dependencies: + semver: 7.7.4 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-decimal@1.0.4: {} + + is-descriptor@0.1.7: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-descriptor@1.0.3: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-directory@0.3.1: {} + + is-docker@3.0.0: {} + + is-extendable@0.1.1: {} + + is-extendable@1.0.1: + dependencies: + is-plain-object: 2.0.4 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@2.0.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@5.1.0: + dependencies: + get-east-asian-width: 1.5.0 + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@3.1.0: + dependencies: + is-extglob: 2.1.1 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@1.0.4: {} + + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@3.0.0: + dependencies: + kind-of: 3.2.2 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-path-inside@3.0.3: {} + + is-path-inside@4.0.0: {} + + is-plain-obj@1.1.0: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-plain-object@5.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-regexp@1.0.0: {} + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-supported-regexp-flag@1.0.1: {} + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.20 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-what@3.14.1: {} + + is-what@5.5.0: {} + + is-whitespace-character@1.0.4: {} + + is-windows@1.0.2: {} + + is-word-character@1.0.4: {} + + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isobject@2.1.0: + dependencies: + isarray: 1.0.0 + + isobject@3.0.1: {} + + jiti@2.6.1: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + js-yaml@3.14.2: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + keyv@5.6.0: + dependencies: + '@keyv/serialize': 1.1.1 + + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + kind-of@4.0.0: + dependencies: + is-buffer: 1.1.6 + + kind-of@6.0.3: {} + + known-css-properties@0.11.0: {} + + less@4.5.1: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + + leven@2.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lines-and-columns@1.2.4: {} + + lint-staged@16.3.2: + dependencies: + commander: 14.0.3 + listr2: 9.0.5 + micromatch: 4.0.8 + string-argv: 0.3.2 + tinyexec: 1.0.2 + yaml: 2.8.2 + + listr2@9.0.5: + dependencies: + cli-truncate: 5.2.0 + colorette: 2.0.20 + eventemitter3: 5.0.4 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.2 + + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + + local-pkg@1.1.2: + dependencies: + mlly: 1.8.0 + pkg-types: 2.3.0 + quansync: 0.2.11 + + locate-path@2.0.0: + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.kebabcase@4.1.1: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.truncate@4.4.2: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.23: {} + + log-symbols@2.2.0: + dependencies: + chalk: 2.4.2 + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.3.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + + longest-streak@2.0.4: {} + + loud-rejection@1.6.0: + dependencies: + currently-unhandled: 0.4.1 + signal-exit: 3.0.7 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string-ast@1.0.3: + dependencies: + magic-string: 0.30.21 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + + map-cache@0.2.2: {} + + map-obj@1.0.1: {} + + map-obj@2.0.0: {} + + map-visit@1.0.0: + dependencies: + object-visit: 1.0.1 + + markdown-escapes@1.0.4: {} + + markdown-table@1.1.3: {} + + math-intrinsics@1.1.0: {} + + mathml-tag-names@2.1.3: {} + + mathml-tag-names@4.0.0: {} + + mdast-util-compact@1.0.4: + dependencies: + unist-util-visit: 1.4.1 + + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + + mdn-data@2.12.2: {} + + meow@12.1.1: {} + + meow@13.2.0: {} + + meow@14.1.0: {} + + meow@5.0.0: + dependencies: + camelcase-keys: 4.2.0 + decamelize-keys: 1.1.1 + loud-rejection: 1.6.0 + minimist-options: 3.0.2 + normalize-package-data: 2.5.0 + read-pkg-up: 3.0.0 + redent: 2.0.0 + trim-newlines: 2.0.0 + yargs-parser: 10.1.0 + + merge2@1.4.1: {} + + micromatch@3.1.10: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: + optional: true + + mimic-function@5.0.1: {} + + minimatch@10.2.4: + dependencies: + brace-expansion: 5.0.4 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.12 + + minimist-options@3.0.2: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + + minimist@1.2.8: {} + + mitt@3.0.1: {} + + mixin-deep@1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mlly@1.8.0: + dependencies: + acorn: 8.16.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.3 + + mockjs@1.1.0: + dependencies: + commander: 14.0.3 + + ms@2.0.0: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + nanoid@3.3.11: {} + + nanomatch@1.2.13: + 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.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + napi-postinstall@0.3.4: {} + + natural-compare@1.4.0: {} + + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.5.0 + optional: true + + node-releases@2.0.36: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.11 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + normalize-selector@0.2.0: {} + + nprogress@0.2.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + num2fraction@1.2.2: {} + + number-precision@1.6.0: {} + + object-copy@0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object-visit@1.0.1: + dependencies: + isobject: 3.0.1 + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + obug@2.1.1: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + open@11.0.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-limit@1.3.0: + dependencies: + p-try: 1.0.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@2.0.0: + dependencies: + p-limit: 1.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@1.0.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-entities@1.2.2: + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.4 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.0 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-node-version@1.0.1: {} + + pascalcase@0.1.1: {} + + path-browserify@1.0.1: {} + + path-dirname@1.0.2: {} + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-type@3.0.0: + dependencies: + pify: 3.0.0 + + pathe@2.0.3: {} + + perfect-debounce@1.0.0: {} + + perfect-debounce@2.1.0: {} + + picocolors@0.2.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + pify@3.0.0: {} + + pify@4.0.1: {} + + pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)): + dependencies: + '@vue/devtools-api': 7.7.9 + vue: 3.5.29(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + + pkg-types@2.3.0: + dependencies: + confbox: 0.2.4 + exsolve: 1.0.8 + pathe: 2.0.3 + + pnpm@10.30.3: {} + + posix-character-classes@0.1.1: {} + + possible-typed-array-names@1.1.0: {} + + postcss-html@0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39): + dependencies: + htmlparser2: 3.10.1 + postcss: 7.0.39 + postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39) + + postcss-html@1.8.1: + dependencies: + htmlparser2: 8.0.2 + js-tokens: 9.0.1 + postcss: 8.5.8 + postcss-safe-parser: 6.0.0(postcss@8.5.8) + + postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39): + dependencies: + '@babel/core': 7.29.0 + postcss: 7.0.39 + postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39) + transitivePeerDependencies: + - supports-color + + postcss-less@3.1.4: + dependencies: + postcss: 7.0.39 + + postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39): + dependencies: + postcss: 7.0.39 + postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39) + remark: 10.0.1 + unist-util-find-all-after: 1.0.5 + + postcss-media-query-parser@0.2.3: {} + + postcss-reporter@6.0.1: + dependencies: + chalk: 2.4.2 + lodash: 4.17.23 + log-symbols: 2.2.0 + postcss: 7.0.39 + + postcss-resolve-nested-selector@0.1.6: {} + + postcss-safe-parser@4.0.2: + dependencies: + postcss: 7.0.39 + + postcss-safe-parser@6.0.0(postcss@8.5.8): + dependencies: + postcss: 8.5.8 + + postcss-safe-parser@7.0.1(postcss@8.5.8): + dependencies: + postcss: 8.5.8 + + postcss-sass@0.3.5: + dependencies: + gonzales-pe: 4.3.0 + postcss: 7.0.39 + + postcss-scss@2.1.1: + dependencies: + postcss: 7.0.39 + + postcss-selector-parser@3.1.2: + dependencies: + dot-prop: 5.3.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + + postcss-selector-parser@7.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-sorting@4.1.0: + dependencies: + lodash: 4.17.23 + postcss: 7.0.39 + + postcss-sorting@9.1.0(postcss@8.5.8): + dependencies: + postcss: 8.5.8 + + postcss-syntax@0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39): + dependencies: + postcss: 7.0.39 + optionalDependencies: + postcss-html: 0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39) + postcss-jsx: 0.36.4(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39) + postcss-less: 3.1.4 + postcss-markdown: 0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39) + postcss-scss: 2.1.1 + + postcss-value-parser@3.3.1: {} + + postcss-value-parser@4.2.0: {} + + postcss@7.0.39: + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + + postcss@8.5.8: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + powershell-utils@0.1.0: {} + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.1: + dependencies: + fast-diff: 1.3.0 + + prettier@3.8.1: {} + + proxy-from-env@1.1.0: {} + + prr@1.0.1: + optional: true + + punycode@2.3.1: {} + + qified@0.6.0: + dependencies: + hookified: 1.15.1 + + quansync@0.2.11: {} + + query-string@9.3.1: + dependencies: + decode-uri-component: 0.4.1 + filter-obj: 5.1.0 + split-on-first: 3.0.0 + + queue-microtask@1.2.3: {} + + quick-lru@1.1.0: {} + + read-pkg-up@3.0.0: + dependencies: + find-up: 2.1.0 + read-pkg: 3.0.0 + + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@5.0.0: {} + + redent@2.0.0: + dependencies: + indent-string: 3.2.0 + strip-indent: 2.0.0 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regex-not@1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + remark-parse@6.0.3: + dependencies: + collapse-white-space: 1.0.6 + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + is-whitespace-character: 1.0.4 + is-word-character: 1.0.4 + markdown-escapes: 1.0.4 + parse-entities: 1.2.2 + repeat-string: 1.6.1 + state-toggle: 1.0.3 + trim: 0.0.1 + trim-trailing-lines: 1.1.4 + unherit: 1.1.3 + unist-util-remove-position: 1.1.4 + vfile-location: 2.0.6 + xtend: 4.0.2 + + remark-stringify@6.0.4: + dependencies: + ccount: 1.1.0 + is-alphanumeric: 1.0.0 + is-decimal: 1.0.4 + is-whitespace-character: 1.0.4 + longest-streak: 2.0.4 + markdown-escapes: 1.0.4 + markdown-table: 1.1.3 + mdast-util-compact: 1.0.4 + parse-entities: 1.2.2 + repeat-string: 1.6.1 + state-toggle: 1.0.3 + stringify-entities: 1.3.2 + unherit: 1.1.3 + xtend: 4.0.2 + + remark@10.0.1: + dependencies: + remark-parse: 6.0.3 + remark-stringify: 6.0.4 + unified: 7.1.0 + + repeat-element@1.1.4: {} + + repeat-string@1.6.1: {} + + replace-ext@1.0.0: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resize-observer-polyfill@1.5.1: {} + + resolve-from@3.0.0: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve-url@0.2.1: {} + + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + ret@0.1.15: {} + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rimraf@2.6.3: + dependencies: + glob: 7.2.3 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup-plugin-visualizer@7.0.1(rollup@4.59.0): + dependencies: + open: 11.0.0 + picomatch: 4.0.3 + source-map: 0.7.6 + yargs: 18.0.0 + optionalDependencies: + rollup: 4.59.0 + + rollup@2.80.0: + optionalDependencies: + fsevents: 2.3.3 + + rollup@4.59.0: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.59.0 + '@rollup/rollup-android-arm64': 4.59.0 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-freebsd-arm64': 4.59.0 + '@rollup/rollup-freebsd-x64': 4.59.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 + '@rollup/rollup-linux-arm-musleabihf': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-arm64-musl': 4.59.0 + '@rollup/rollup-linux-loong64-gnu': 4.59.0 + '@rollup/rollup-linux-loong64-musl': 4.59.0 + '@rollup/rollup-linux-ppc64-gnu': 4.59.0 + '@rollup/rollup-linux-ppc64-musl': 4.59.0 + '@rollup/rollup-linux-riscv64-gnu': 4.59.0 + '@rollup/rollup-linux-riscv64-musl': 4.59.0 + '@rollup/rollup-linux-s390x-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-musl': 4.59.0 + '@rollup/rollup-openbsd-x64': 4.59.0 + '@rollup/rollup-openharmony-arm64': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-ia32-msvc': 4.59.0 + '@rollup/rollup-win32-x64-gnu': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 + fsevents: 2.3.3 + + run-applescript@7.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safe-regex@1.1.0: + dependencies: + ret: 0.1.15 + + safer-buffer@2.1.2: + optional: true + + sax@1.5.0: + optional: true + + scroll-into-view-if-needed@2.2.31: + dependencies: + compute-scroll-into-view: 1.0.20 + + scule@1.3.0: {} + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.4: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + set-value@2.0.1: + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-swizzle@0.2.4: + dependencies: + is-arrayish: 0.3.4 + + slash@2.0.0: {} + + slash@5.1.0: {} + + slice-ansi@2.1.0: + dependencies: + ansi-styles: 3.2.1 + astral-regex: 1.0.0 + is-fullwidth-code-point: 2.0.0 + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@7.1.2: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + slice-ansi@8.0.0: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + snapdragon-node@2.1.1: + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + + snapdragon-util@3.0.1: + dependencies: + kind-of: 3.2.2 + + snapdragon@0.8.2: + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + + sortablejs@1.15.7: {} + + source-map-js@1.2.1: {} + + source-map-resolve@0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + + source-map-url@0.4.1: {} + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.6: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.23 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.23 + + spdx-license-ids@3.0.23: {} + + speakingurl@14.0.1: {} + + specificity@0.4.1: {} + + split-on-first@3.0.0: {} + + split-string@3.1.0: + dependencies: + extend-shallow: 3.0.2 + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + + stable-hash-x@0.2.0: {} + + state-toggle@1.0.3: {} + + static-extend@0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + string-argv@0.3.2: {} + + string-width@3.1.0: + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 + + string-width@8.2.0: + dependencies: + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@1.3.2: + dependencies: + character-entities-html4: 1.1.4 + character-entities-legacy: 1.1.4 + is-alphanumerical: 1.0.4 + is-hexadecimal: 1.0.4 + + strip-ansi@5.2.0: + dependencies: + ansi-regex: 4.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-bom@3.0.0: {} + + strip-indent@2.0.0: {} + + strip-json-comments@3.1.1: {} + + style-search@0.1.0: {} + + stylelint-config-html@1.1.0(postcss-html@1.8.1)(stylelint@17.4.0(typescript@5.9.3)): + dependencies: + postcss-html: 1.8.1 + stylelint: 17.4.0(typescript@5.9.3) + + stylelint-config-prettier@9.0.5(stylelint@17.4.0(typescript@5.9.3)): + dependencies: + stylelint: 17.4.0(typescript@5.9.3) + + stylelint-config-rational-order@0.1.2: + dependencies: + stylelint: 9.10.1 + stylelint-order: 2.2.1(stylelint@9.10.1) + transitivePeerDependencies: + - supports-color + + stylelint-config-recommended-vue@1.6.1(postcss-html@1.8.1)(stylelint@17.4.0(typescript@5.9.3)): + dependencies: + postcss-html: 1.8.1 + semver: 7.7.4 + stylelint: 17.4.0(typescript@5.9.3) + stylelint-config-html: 1.1.0(postcss-html@1.8.1)(stylelint@17.4.0(typescript@5.9.3)) + stylelint-config-recommended: 18.0.0(stylelint@17.4.0(typescript@5.9.3)) + + stylelint-config-recommended@18.0.0(stylelint@17.4.0(typescript@5.9.3)): + dependencies: + stylelint: 17.4.0(typescript@5.9.3) + + stylelint-config-standard@40.0.0(stylelint@17.4.0(typescript@5.9.3)): + dependencies: + stylelint: 17.4.0(typescript@5.9.3) + stylelint-config-recommended: 18.0.0(stylelint@17.4.0(typescript@5.9.3)) + + stylelint-order@2.2.1(stylelint@9.10.1): + dependencies: + lodash: 4.17.23 + postcss: 7.0.39 + postcss-sorting: 4.1.0 + stylelint: 9.10.1 + + stylelint-order@7.0.1(stylelint@17.4.0(typescript@5.9.3)): + dependencies: + postcss: 8.5.8 + postcss-sorting: 9.1.0(postcss@8.5.8) + stylelint: 17.4.0(typescript@5.9.3) + + stylelint@17.4.0(typescript@5.9.3): + dependencies: + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-syntax-patches-for-csstree': 1.0.29 + '@csstools/css-tokenizer': 4.0.0 + '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/selector-resolve-nested': 4.0.0(postcss-selector-parser@7.1.1) + '@csstools/selector-specificity': 6.0.0(postcss-selector-parser@7.1.1) + colord: 2.9.3 + cosmiconfig: 9.0.1(typescript@5.9.3) + css-functions-list: 3.3.3 + css-tree: 3.1.0 + debug: 4.4.3 + fast-glob: 3.3.3 + fastest-levenshtein: 1.0.16 + file-entry-cache: 11.1.2 + global-modules: 2.0.0 + globby: 16.1.1 + globjoin: 0.1.4 + html-tags: 5.1.0 + ignore: 7.0.5 + import-meta-resolve: 4.2.0 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + mathml-tag-names: 4.0.0 + meow: 14.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.8 + postcss-safe-parser: 7.0.1(postcss@8.5.8) + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + string-width: 8.2.0 + supports-hyperlinks: 4.4.0 + svg-tags: 1.0.0 + table: 6.9.0 + write-file-atomic: 7.0.1 + transitivePeerDependencies: + - supports-color + - typescript + + stylelint@9.10.1: + dependencies: + autoprefixer: 9.8.8 + balanced-match: 1.0.2 + chalk: 2.4.2 + cosmiconfig: 5.2.1 + debug: 4.4.3 + execall: 1.0.0 + file-entry-cache: 4.0.0 + get-stdin: 6.0.0 + global-modules: 2.0.0 + globby: 9.2.0 + globjoin: 0.1.4 + html-tags: 2.0.0 + ignore: 5.3.2 + import-lazy: 3.1.0 + imurmurhash: 0.1.4 + known-css-properties: 0.11.0 + leven: 2.1.0 + lodash: 4.17.23 + log-symbols: 2.2.0 + mathml-tag-names: 2.1.3 + meow: 5.0.0 + micromatch: 3.1.10 + normalize-selector: 0.2.0 + pify: 4.0.1 + postcss: 7.0.39 + postcss-html: 0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39) + postcss-jsx: 0.36.4(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39) + postcss-less: 3.1.4 + postcss-markdown: 0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39) + postcss-media-query-parser: 0.2.3 + postcss-reporter: 6.0.1 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 4.0.2 + postcss-sass: 0.3.5 + postcss-scss: 2.1.1 + postcss-selector-parser: 3.1.2 + postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss-html@1.8.1)(postcss@8.5.8))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39) + postcss-value-parser: 3.3.1 + resolve-from: 4.0.0 + signal-exit: 3.0.7 + slash: 2.0.0 + specificity: 0.4.1 + string-width: 3.1.0 + style-search: 0.1.0 + sugarss: 2.0.0 + svg-tags: 1.0.0 + table: 5.4.6 + transitivePeerDependencies: + - supports-color + + sugarss@2.0.0: + dependencies: + postcss: 7.0.39 + + superjson@2.2.6: + dependencies: + copy-anything: 4.0.5 + + supports-color@10.2.2: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@4.4.0: + dependencies: + has-flag: 5.0.1 + supports-color: 10.2.2 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-tags@1.0.0: {} + + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.2.2 + css-tree: 2.3.1 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + + synckit@0.11.12: + dependencies: + '@pkgr/core': 0.2.9 + + table@5.4.6: + dependencies: + ajv: 6.14.0 + lodash: 4.17.23 + slice-ansi: 2.1.0 + string-width: 3.1.0 + + table@6.9.0: + dependencies: + ajv: 8.18.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + text-table@0.2.0: {} + + tinyexec@1.0.2: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + to-object-path@0.3.0: + dependencies: + kind-of: 3.2.2 + + to-regex-range@2.1.1: + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + to-regex@3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + + trim-newlines@2.0.0: {} + + trim-trailing-lines@1.1.4: {} + + trim@0.0.1: {} + + trough@1.0.5: {} + + ts-api-utils@2.4.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.3.0: {} + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript@5.9.3: {} + + ufo@1.6.3: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@7.18.2: {} + + unherit@1.1.3: + dependencies: + inherits: 2.0.4 + xtend: 4.0.2 + + unicorn-magic@0.4.0: {} + + unified@7.1.0: + dependencies: + '@types/unist': 2.0.11 + '@types/vfile': 3.0.2 + bail: 1.0.5 + extend: 3.0.2 + is-plain-obj: 1.1.0 + trough: 1.0.5 + vfile: 3.0.1 + x-is-string: 0.1.0 + + union-value@1.0.1: + 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: {} + + unist-util-find-all-after@1.0.5: + dependencies: + unist-util-is: 3.0.0 + + unist-util-is@3.0.0: {} + + unist-util-remove-position@1.1.4: + dependencies: + unist-util-visit: 1.4.1 + + unist-util-stringify-position@1.1.2: {} + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@2.1.2: + dependencies: + unist-util-is: 3.0.0 + + unist-util-visit@1.4.1: + dependencies: + unist-util-visit-parents: 2.1.2 + + universalify@2.0.1: {} + + unplugin-utils@0.3.1: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.3 + + unplugin-vue-components@31.0.0(vue@3.5.29(typescript@5.9.3)): + dependencies: + chokidar: 5.0.0 + local-pkg: 1.1.2 + magic-string: 0.30.21 + mlly: 1.8.0 + obug: 2.1.1 + picomatch: 4.0.3 + tinyglobby: 0.2.15 + unplugin: 2.3.11 + unplugin-utils: 0.3.1 + vue: 3.5.29(typescript@5.9.3) + + unplugin@2.3.11: + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.16.0 + picomatch: 4.0.3 + webpack-virtual-modules: 0.6.2 + + unplugin@3.0.0: + dependencies: + '@jridgewell/remapping': 2.3.5 + picomatch: 4.0.3 + webpack-virtual-modules: 0.6.2 + + unrs-resolver@1.11.1: + dependencies: + napi-postinstall: 0.3.4 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.11.1 + '@unrs/resolver-binding-android-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-x64': 1.11.1 + '@unrs/resolver-binding-freebsd-x64': 1.11.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-musl': 1.11.1 + '@unrs/resolver-binding-wasm32-wasi': 1.11.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + + unset-value@1.0.0: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + + update-browserslist-db@1.2.3(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + urix@0.1.0: {} + + use@3.1.1: {} + + util-deprecate@1.0.2: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + vfile-location@2.0.6: {} + + vfile-message@1.1.1: + dependencies: + unist-util-stringify-position: 1.1.2 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@3.0.1: + dependencies: + is-buffer: 2.0.5 + replace-ext: 1.0.0 + unist-util-stringify-position: 1.1.2 + vfile-message: 1.1.1 + + vite-plugin-compression@0.5.1(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2)): + dependencies: + chalk: 4.1.2 + debug: 4.4.3 + fs-extra: 10.1.0 + vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2) + transitivePeerDependencies: + - supports-color + + vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2)): + dependencies: + '@rollup/pluginutils': 4.2.1 + '@types/eslint': 8.56.12 + eslint: 8.57.0 + rollup: 2.80.0 + vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2) + + vite-svg-loader@4.0.0: + dependencies: + '@vue/compiler-sfc': 3.5.29 + svgo: 3.3.2 + + vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(yaml@2.8.2): + dependencies: + esbuild: 0.27.3 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.8 + rollup: 4.59.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 25.3.3 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.5.1 + yaml: 2.8.2 + + vscode-uri@3.1.0: {} + + vue-echarts@8.0.1(echarts@6.0.0)(vue@3.5.29(typescript@5.9.3)): + dependencies: + echarts: 6.0.0 + vue: 3.5.29(typescript@5.9.3) + + vue-eslint-parser@10.4.0(eslint@8.57.0): + dependencies: + debug: 4.4.3 + eslint: 8.57.0 + eslint-scope: 9.1.1 + eslint-visitor-keys: 5.0.1 + espree: 11.1.1 + esquery: 1.7.0 + semver: 7.7.4 + transitivePeerDependencies: + - supports-color + + vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)): + dependencies: + '@intlify/core-base': 11.2.8 + '@intlify/shared': 11.2.8 + '@vue/devtools-api': 6.6.4 + vue: 3.5.29(typescript@5.9.3) + + vue-router@5.0.3(@vue/compiler-sfc@3.5.29)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)): + dependencies: + '@babel/generator': 7.29.1 + '@vue-macros/common': 3.1.2(vue@3.5.29(typescript@5.9.3)) + '@vue/devtools-api': 8.0.7 + ast-walker-scope: 0.8.3 + chokidar: 5.0.0 + json5: 2.2.3 + local-pkg: 1.1.2 + magic-string: 0.30.21 + mlly: 1.8.0 + muggle-string: 0.4.1 + pathe: 2.0.3 + picomatch: 4.0.3 + scule: 1.3.0 + tinyglobby: 0.2.15 + unplugin: 3.0.0 + unplugin-utils: 0.3.1 + vue: 3.5.29(typescript@5.9.3) + yaml: 2.8.2 + optionalDependencies: + '@vue/compiler-sfc': 3.5.29 + pinia: 3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) + + vue-tsc@3.2.5(typescript@5.9.3): + dependencies: + '@volar/typescript': 2.4.28 + '@vue/language-core': 3.2.5 + typescript: 5.9.3 + + vue@3.5.29(typescript@5.9.3): + dependencies: + '@vue/compiler-dom': 3.5.29 + '@vue/compiler-sfc': 3.5.29 + '@vue/runtime-dom': 3.5.29 + '@vue/server-renderer': 3.5.29(vue@3.5.29(typescript@5.9.3)) + '@vue/shared': 3.5.29 + optionalDependencies: + typescript: 5.9.3 + + webpack-virtual-modules@0.6.2: {} + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.20 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.20: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + wrappy@1.0.2: {} + + write-file-atomic@7.0.1: + dependencies: + signal-exit: 4.1.0 + + write@1.0.3: + dependencies: + mkdirp: 0.5.6 + + wsl-utils@0.3.1: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.1.0 + + x-is-string@0.1.0: {} + + xml-name-validator@4.0.0: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml@2.8.2: {} + + yargs-parser@10.1.0: + dependencies: + camelcase: 4.1.0 + + yargs-parser@21.1.1: {} + + yargs-parser@22.0.0: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yargs@18.0.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 7.2.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 + + yocto-queue@0.1.0: {} + + zrender@6.0.0: + dependencies: + tslib: 2.3.0 diff --git a/prettier.config.mjs b/prettier.config.mjs new file mode 100644 index 0000000..227add2 --- /dev/null +++ b/prettier.config.mjs @@ -0,0 +1,16 @@ +export default { + printWidth: 140, + tabWidth: 2, + useTabs: false, + semi: false, + singleQuote: true, + quoteProps: 'as-needed', + jsxSingleQuote: true, + trailingComma: 'es5', + bracketSpacing: true, + bracketSameLine: false, + arrowParens: 'always', + htmlWhitespaceSensitivity: 'ignore', + vueIndentScriptAndStyle: false, + endOfLine: 'lf', +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..e821936 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/api/dashboard.ts b/src/api/dashboard.ts new file mode 100644 index 0000000..68fb92e --- /dev/null +++ b/src/api/dashboard.ts @@ -0,0 +1,22 @@ +import type { TableData } from '@arco-design/web-vue/es/table/interface' +import axios from 'axios' + +export interface ContentDataRecord { + x: string + y: number +} + +export function queryContentData() { + return axios.get('/api/content-data') +} + +export interface PopularRecord { + key: number + clickNumber: string + title: string + increases: number +} + +export function queryPopularList(params: { type: string }) { + return axios.get('/api/popular/list', { params }) +} diff --git a/src/api/interceptor.ts b/src/api/interceptor.ts new file mode 100644 index 0000000..7187a58 --- /dev/null +++ b/src/api/interceptor.ts @@ -0,0 +1,72 @@ +import { useUserStore } from '@/store' +import { getToken } from '@/utils/auth' +import { Message, Modal } from '@arco-design/web-vue' +import axios from 'axios' + +export interface HttpResponse { + status: number + msg: string + code: number + data: T +} + +if (import.meta.env.VITE_API_BASE_URL) { + axios.defaults.baseURL = import.meta.env.VITE_API_BASE_URL +} + +axios.interceptors.request.use( + (config: any) => { + // let each request carry token + // this example using the JWT token + // Authorization is a custom headers key + // please modify it according to the actual situation + const token = getToken() + if (token) { + if (!config.headers) { + config.headers = {} + } + config.headers.Authorization = `Bearer ${token}` + } + return config + }, + (error) => { + // do something + return Promise.reject(error) + } +) +// add response interceptors +axios.interceptors.response.use( + (response: any) => { + const res = response.data + // if the custom code is not 20000, it is judged as an error. + if (res.code !== 20000) { + Message.error({ + content: res.msg || 'Error', + duration: 5 * 1000, + }) + // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; + if ([50008, 50012, 50014].includes(res.code) && response.config.url !== '/api/user/info') { + Modal.error({ + title: 'Confirm logout', + content: 'You have been logged out, you can cancel to stay on this page, or log in again', + okText: 'Re-Login', + async onOk() { + const userStore = useUserStore() + + await userStore.logout() + window.location.reload() + }, + }) + } + return Promise.reject(new Error(res.msg || 'Error')) + } + return res + }, + (error) => { + Message.error({ + content: error.msg || 'Request Error', + duration: 5 * 1000, + }) + return Promise.reject(error) + } +) diff --git a/src/api/list.ts b/src/api/list.ts new file mode 100644 index 0000000..0b1d6b6 --- /dev/null +++ b/src/api/list.ts @@ -0,0 +1,56 @@ +import type { DescData } from '@arco-design/web-vue/es/descriptions/interface' +import axios from 'axios' +import qs from 'query-string' + +export interface PolicyRecord { + id: string + number: number + name: string + contentType: 'img' | 'horizontalVideo' | 'verticalVideo' + filterType: 'artificial' | 'rules' + count: number + status: 'online' | 'offline' + createdTime: string +} + +export interface PolicyParams extends Partial { + current: number + pageSize: number +} + +export interface PolicyListRes { + list: PolicyRecord[] + total: number +} + +export function queryPolicyList(params: PolicyParams) { + return axios.get('/api/list/policy', { + params, + paramsSerializer: (obj) => { + return qs.stringify(obj) + }, + }) +} + +export interface ServiceRecord { + id: number + title: string + description: string + name?: string + actionType?: string + icon?: string + data?: DescData[] + enable?: boolean + expires?: boolean +} +export function queryInspectionList() { + return axios.get('/api/list/quality-inspection') +} + +export function queryTheServiceList() { + return axios.get('/api/list/the-service') +} + +export function queryRulesPresetList() { + return axios.get('/api/list/rules-preset') +} diff --git a/src/api/message.ts b/src/api/message.ts new file mode 100644 index 0000000..984f4c9 --- /dev/null +++ b/src/api/message.ts @@ -0,0 +1,38 @@ +import axios from 'axios' + +export interface MessageRecord { + id: number + type: string + title: string + subTitle: string + avatar?: string + content: string + time: string + status: 0 | 1 + messageType?: number +} +export type MessageListType = MessageRecord[] + +export function queryMessageList() { + return axios.post('/api/message/list') +} + +interface MessageStatus { + ids: number[] +} + +export function setMessageStatus(data: MessageStatus) { + return axios.post('/api/message/read', data) +} + +export interface ChatRecord { + id: number + username: string + content: string + time: string + isCollect: boolean +} + +export function queryChatList() { + return axios.post('/api/chat/list') +} diff --git a/src/api/profile.ts b/src/api/profile.ts new file mode 100644 index 0000000..8a2a2c0 --- /dev/null +++ b/src/api/profile.ts @@ -0,0 +1,49 @@ +import axios from 'axios' + +export interface ProfileBasicRes { + status: number + video: { + mode: string + acquisition: { + resolution: string + frameRate: number + } + encoding: { + resolution: string + rate: { + min: number + max: number + default: number + } + frameRate: number + profile: string + } + } + audio: { + mode: string + acquisition: { + channels: number + } + encoding: { + channels: number + rate: number + profile: string + } + } +} + +export function queryProfileBasic() { + return axios.get('/api/profile/basic') +} + +export type operationLogRes = Array<{ + key: string + contentNumber: string + updateContent: string + status: number + updateTime: string +}> + +export function queryOperationLog() { + return axios.get('/api/operation/log') +} diff --git a/src/api/user-center.ts b/src/api/user-center.ts new file mode 100644 index 0000000..1b7c85f --- /dev/null +++ b/src/api/user-center.ts @@ -0,0 +1,88 @@ +import axios from 'axios' + +export interface MyProjectRecord { + id: number + name: string + description: string + peopleNumber: number + contributors: { + name: string + email: string + avatar: string + }[] +} +export function queryMyProjectList() { + return axios.post('/api/user/my-project/list') +} + +export interface MyTeamRecord { + id: number + avatar: string + name: string + peopleNumber: number +} +export function queryMyTeamList() { + return axios.post('/api/user/my-team/list') +} + +export interface LatestActivity { + id: number + title: string + description: string + avatar: string +} +export function queryLatestActivity() { + return axios.post('/api/user/latest-activity') +} + +export function saveUserInfo() { + return axios.post('/api/user/save-info') +} + +export interface BasicInfoModel { + email: string + nickname: string + countryRegion: string + area: string + address: string + profile: string +} + +export interface EnterpriseCertificationModel { + accountType: number + status: number + time: string + legalPerson: string + certificateType: string + authenticationNumber: string + enterpriseName: string + enterpriseCertificateType: string + organizationCode: string +} + +export type CertificationRecord = Array<{ + certificationType: number + certificationContent: string + status: number + time: string +}> + +export interface UnitCertification { + enterpriseInfo: EnterpriseCertificationModel + record: CertificationRecord +} + +export function queryCertification() { + return axios.post('/api/user/certification') +} + +export function userUploadApi( + data: FormData, + config: { + controller: AbortController + onUploadProgress?: (progressEvent: any) => void + } +) { + // const controller = new AbortController(); + return axios.post('/api/user/upload', data, config) +} diff --git a/src/api/user.ts b/src/api/user.ts new file mode 100644 index 0000000..c37bdfd --- /dev/null +++ b/src/api/user.ts @@ -0,0 +1,27 @@ +import { UserState } from '@/store/modules/user/types' +import axios from 'axios' +import type { RouteRecordNormalized } from 'vue-router' + +export interface LoginData { + username: string + password: string +} + +export interface LoginRes { + token: string +} +export function login(data: LoginData) { + return axios.post('/api/user/login', data) +} + +export function logout() { + return axios.post('/api/user/logout') +} + +export function getUserInfo() { + return axios.post('/api/user/info') +} + +export function getMenuList() { + return axios.post('/api/user/menu') +} diff --git a/src/api/visualization.ts b/src/api/visualization.ts new file mode 100644 index 0000000..d1b3df2 --- /dev/null +++ b/src/api/visualization.ts @@ -0,0 +1,70 @@ +import axios from 'axios' +import { GeneralChart } from '@/types/global' + +export interface ChartDataRecord { + x: string + y: number + name: string +} +export interface DataChainGrowth { + quota: string +} + +export interface DataChainGrowthRes { + count: number + growth: number + chartData: { + xAxis: string[] + data: { name: string; value: number[] } + } +} +export function queryDataChainGrowth(data: DataChainGrowth) { + return axios.post('/api/data-chain-growth', data) +} + +export interface PopularAuthorRes { + list: { + ranking: number + author: string + contentCount: number + clickCount: number + }[] +} + +export function queryPopularAuthor() { + return axios.get('/api/popular-author/list') +} + +export interface ContentPublishRecord { + x: string[] + y: number[] + name: string +} + +export function queryContentPublish() { + return axios.get('/api/content-publish') +} + +export function queryContentPeriodAnalysis() { + return axios.post('/api/content-period-analysis') +} + +export interface PublicOpinionAnalysis { + quota: string +} +export interface PublicOpinionAnalysisRes { + count: number + growth: number + chartData: ChartDataRecord[] +} +export function queryPublicOpinionAnalysis(data: DataChainGrowth) { + return axios.post('/api/public-opinion-analysis', data) +} +export interface DataOverviewRes { + xAxis: string[] + data: Array<{ name: string; value: number[]; count: number }> +} + +export function queryDataOverview() { + return axios.post('/api/data-overview') +} diff --git a/src/assets/images/login-banner.png b/src/assets/images/login-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b377603157d64bacfd184e75b889dd5e24071c GIT binary patch literal 63369 zcmc$F_dnI|8^7dm%yTl5l;c>T5JJQ$$H>UcUS*S=b*$tVhh&qL5uy-TIkw}-UMYJX zve&UU-v{#ke7}Fe_XmDBkJsyU-`9Fx*ZsV%J499aDJ9uWG6DhuN_jbHbpnE`)dU2D zeL!LY0)px8m1_h91f-5~y3Pay(1&M#S7bi$za$_axZeusj#%(0l z4q5(RmD@E?@!$^_DhNy zs6_oa@&_AVe;NskyR6uBkW)wAGxpKuov-!~?B6+4KOZ#%= zDQ3#GmAu70=n1FW<`1!xOzK((a;PXAqj;{oU@6W|p%lE*t1lGS1S?WrOCdYfRO0q( zpaEtS0KN;^s8n}n-W^FVch5G>WT@^%zyEZ(0TVJ#m*fgg+FCYNPQ-;KiXvqfHoCLW z@bbh^I8ISL2pNB2qEM>`nQ+-%%Jrz|4ozS6gRkIdLfYyJ`{^L5tL7_@M5c@cb4x2e zg%5~!$Fl|gdoz;hcgrGtzLvZ3FAr(kN73eZ7r^D#B(i?Rl9{;6%H0t8vrbl1lf`)O z&m($ixF3JRG1O zN%?7>-R|XY?h9)QWN-W)2K8ayXF7 zQ~pNBKZl9F7GxQ3Mp8VxCY0oNtr%qSPra=KZl+x+jBph`YviSVVm}S8Fx=23`c=gi z08~u6utO_hIMX5}C-gKC-23+ONm{ibLm;mk)#`0u!+q~@(hotL^7 z|Go=Y6sD~?d#ni^Z@7Gzx`)&JL?ifHde%PUJ-Z#6OL^pp9}$jFwsq_?c#sMH^9C2v zDuG9UDq%0+f4_hPQLFXcZBmzBwt$p%bC(UitMSKD>)I6ErFmRP1cO#F-5rAeJqNaM zPYKjD>b^8omU9A^3;i26Cdq#RAV+e)YDv6f!;|Pz;FNVKXu&2c)Tmzc--a5c&513~ zOvpv}G|%}nJ2Wte;a{*$VLM(rA*AGRmodQxql3!esv{euE*GHSb}rKn?96>fl&tMR zaJkC*UTtKC+BJ2n%dLhym67}PQr8({9RE+j!#$inJ}Pq8jLT;Uv6pVU;-M+0hO^Xv zdHJ4ocPRWFS$h)sfAPBV70AWifxmv^(kOcMzk~vF@?q1u(7=F8U(os!VDe@DPXdOI z`%-Jo#@)O2wp5P$Tc-Il@aEks}JrhY0$< zskiS0{I`Tv!uBRfmmV+k!<$}i=^V2*`|NSC$9V&t<%5!@bcwS3!~t|@A*ScmwU6O6s$f`zc%&YzbCS}8?`NX zt96sFPu=_P$8<66O6YR`GEddWMiSWaKch;l0oP-w+mj4uBmd=3xX1EDKevz1>ytco zkM*Kr@MGg?ZWQj;KR3Vm>^NOme<}XmFq`j-+a-&iD?4thT4$8Fygul-+gG8k8SH!? zdy!G9KOepNCVt;2t<1BQw!?r2WghUu9clWu%JRimU~;@DDWC4S2GkL+%5Lt|JPohq zh@c8cz1a-6?{0)T%;VnPaN~Em za-_SDRPaRoZ$r8%+JCxgwBFfweBy&%;S_66>RNVK7v8y&8Kv#lij9M(Xt(~s`4UFl zpv*bNj)|T&eodS{*bu*zHx@4x@ukjmHVf?gDPn;CG9~nX@E|ZS0 z6T!y6@kEUoM%BWgZ;;OG8DPuHeMpd)x1pM|)bIBBpl^qfzr(J0Nm_3%%I?l|5WvR6 zcs>YuQQZ7wNIP}u`E2gbAO#1k3UPN4HLK-$@{9RdgT@}_VaNf~NSu#huwc(WGrl%n zBq} zZ`$hc%b-$++CU1F?iJ=vxWj`Zh|KpKNSz4(#b~e44f-sBlsTI+&#$imh2}HZvXE^h zGNXt@x+#i(nu{E~F^&AVgX8#Ir}B5m0k|Hoo$LHL7rbN~bWvAGBL!ys)+*sTRqIEt*?rE}E?)B*9Sojcox&@7tSRU=EQW21B3I4aYWMTGvdjh2=S2iK|3 zOf~qLu@wR5vVO}pC>*891C|Bc)aILedF8>nzyL(`x zwaki|7)2|A8AXo2CvB;dDYur4@FwEd)|1|ejbAqr`sZGNW<0J|XUj>_NoQ!#>y3-S z@f`UA*&brx&xDZJy+##oIL1ce^4ZMKpz_ISZ`{rBN175`?(N4#G8l- zu!+z=-Ov*3Ireqg_wPDMI(>?W&yt*gCVK2PfA)a(H(VGf*#E|+gEU+ zK1395Y)rEuM%{w)#}lR*xeW-wg!nkV{;o z&=2>w{fBM8)$!UdU_1SW9D;4dDH_+N{8s^MZxx^^Dc7g?CUU#tcu9+>|HZFo06*`1 z^$t#eF$xk7i_;h!{}eG`^J;sMoXkk^-0s&-cFoe6}mbFazlLx|O!s=BJh(W9S>CO&xcm*gqH+OK(N#s|}6lLZyppl`%{F zd}Kw`S_9{hTKcIK)$Sz878_+8l^6p*n&I@R-uYL2%K7Vk6ISPr>n{V9tNg7d3d^3y zZU;ymvph2FnjRaTLa=m8>Tb$Fwf+?;Yx~>HWskp|7#SU}op_1v{#`1g|Ka|Sx8;s% zkhqV*-^OcE+b9-@L0rMx2zRNF@n6Q!H*hciz>DP9_~yJGm3D0c~Bju?31Rz4%NjsNh!cb+6};P}7(QFvXep-xzSeFEj>E5vCm z!?lFRO%5VB8(DiPJpZ}lQ-y5~ciQUf|I~En7tFxaKow9pP=Xd(NQeuop_o`_W!Vgc zixZ~#>PbeN0kbGyBln{)odwP549i}(GRp2`J z%0i7f1x={dKfuce=#E~1%_E4tdgZol^wjt7vC5mpD=CvVCY482UTwcL&_EOlj6g4y3eOP9{ABGJfvK8)r3l*E*$%7?_cb<2RG5+soVPc zwAD=5b?FcFi_o*EVIzhal;tIKnizng1p*n3s~z&tlh?7Z@$rB4i5SNpl>U9H?NAEH z>@%ZY(WlMQ;dytb=D&#fGKKtk1wSG(@1zghqP;-*(w}%-?K~EpK9m#pQj}WUcdfkj z=^t?2!_CHV@riFjuK1&MIwB%IvIVXS{1bh87a6 zkV0YVxg>O42ruCIDM9_^eO@{94_yPVw$*3IjPfj{2>X&}^yo3C41IGFLUizW)OLL{a>&*ds@)ZKwdFOsFaZ&g>-7q!i8Gso;zY_TQ zZ)n{YH@>T#$bb6XQC;TL}! z8UUUG&!U+R97_O+wFgCXvBeF)TRp1X1YI6-K7Oo5wTo+F;5YwpFNa}EN6mMQ4Xak$ zP&~`jKz0WXgf_lz@J0tj9#`*e8IgL@4y=8dCSM5FHX5Yqs;jN6JA8fTeZ)KQZ8X?d zRPPMjTW?>0d;58MzN>oez>(BCbfKc3`B8)}Iw3RE)=q@sK!#mSnTb3#^FgIPrm7a& z=+N{06E~atdHh5&m2{&*uU)_Qoa3*J%fMeZ_@b;uiN{ZUXs>_HGQi; zc@d>|i?gNItmsX{EuwcKp(H|}u+fZ?yRTT$eGkM0IUiVdU4yYDsfwuL~2AEUXu z1YI?5$H0&N%DNV8Q9>&&j){K>ywR`vQpQAhgTd+$dLq9^FzQ$~&~4bB#0~nb6Z75V zps+8?=b;FPIDjsymFO!?;-mDUyup$E;*W113k8n`BISto5bo|W2L}Orr2WWH`0EQ6 zMgGdaii>ldi{E)H z_Dv%fjXouTr-X)4kNBzI6AoLk>N!k|*$BsF@yC+q=d0m8DFmtu$y@0>&v=T+8-HGv zIUKD#ZgD@|7To{sdwTkTejd9`zV}Q;`Q1m=w7uds*qfsY@YU+aEj>)PAJ1ct_dc{7 zWkeGD`?FXoldi`*XwE6b2mB>IX8`1gX3^=shrThV{%y12Q`@ZEk4icclZ^NaV4HKw zD-t=Aluy8ut)^a?{tfj5oQU1Q;f(WQ;T1F4_^pd#;b!RuZoDE#c()ljH(381fAI6T z>Am**7D-`eq-2B`g0G>mU;)dc7b5V+l1L)@$f$kMvYiI*&GsEr&CVur?iUEkCcxKc z?fXgZD$6%;4f4*0CQ_|NZ-y4cZ?7XMYb9Jb#bzK(wHM`gBLF&8BM+Yvq(_C{Tw{K^6LgNDU7vi=K9aH3Ec`y` z05$++V(FyBAHK5#QZi^nL<5O{FaaBRa<50$WYycL=t+X!-(fL&uGTyP7dX#z!P_@r zqx8wmfNRlrz#@>&5q7F5^MDo!H7bQjT-EWOmX|M=tlgMd`Fgl6|1!nX=04xb{G+!K z?n=jonWT!DAth&upg*_0&QnE*eVch(fD2(#{8;TB34rcsOpIg+mjp{r;zP=~gw7SJ z64S%KI>oc*OSIK6e~)ShVC$`OIkX5M1+lR$Ld}3HWCrjZKc|P4PU<&YA*=5q-#_WO z`gsK{0v++<^qVvs(ZG;GQw5xHox@vIk9j-ETQAb61SSD>XcFxt8L$_WXiNmw$H!%i zCc#F%twhou^0wetSKn=IldeaO*?A~QRI{@^Ki~6T!nRmYg#2f%=*=x0buk3tsFo_u zPmKuB_oJ9Tg7?IdO}TG=0;42FmP6E_F!gBqKr^bd)D!uv2R1tEB)P5J2H<`!D>_Xj z_$o^(h>GMyWzR7ue0dj_fzznEx6+(O&ILS|b}@S((2VTPLoggDANCdU$HL~=)v0O% zrGKCKb+u4F{C{fFI#CFfxdF8eKJ{)Pr_tylrK8cM>44iJ5Fes zeBzj1vgO}&SX9O{UX=Z2cOw7{;p%IqDRR;bI;TkG6z}tX8A2%{Db_Z_1f<_{%IDeK zbwXLD(I&!bcjuPe|E$X_rAd;C-_-b|7Ns&43w_lMyVgO{#7g8qJMial4<{7WT}$o2 z8IkAJ<^+9{(eQF3Y|+44UXJ6OI5C4Xq0=QG_F>n0EjoVPr@=~k2sUGA8F{oK;;){% zIa_b2vFl}pP0A1tqFxaI4a{oOL>a_k+d4;SKC>Z{Z}EYTnT94ZN{TreU-T>y+SqBz zah#R^=Lg!rQb2>b2P?P=3^&Ezv*8uMTl*f`F0J|9*kRzYEo%v!S0a?=J4r3~b#>hN z&NDguw2Y+E&R;Q2PFsAKvPrS*m4z%BW&e0?9*RyX=&`ZX~}7iz91#y>wzh& zKWh;G(K4Sr9Z*U4s35}!os*3en8_j(Sv*~LFuJ}!vb#cCvv-vCh)#UMBR0R+)F%Zw zVEQmZL`vtAED*}n^B2prj83oSFL?u&K6Q}^Hf5GVai}{r{z?1NeW3aRJXpVrMICNU zd%?!{15LV{1Jh-QcfWq!fsK|*>TddaPIPU|#&?HMhy*Ma7P>+9ZmMBQF3(*<=jA&s zcm=EJwYf?CASnYRa#ibnlN4-^BJ}M7Hn6A9yk+eLRpq^MmVADOfWqt5mHB0IR(|@v z%k?Nm5|{j@LzIo>VsJ~y>(bz+C3+)ZTe98Ny5@noC&=&>eSMayDi-dC@)wnF)_Dlg z5@1n>8EezX4I=jUV9DCBSf{W|N@H?KA>rye3SIx`t$mq=8=EB%z9*XkKt(f$-y683 zdxasRM+$#Gh!u>JLLP68&HY*L#HXQh=rcxstai@#762SRHkqr{H&=aV_Z*>C z4!p#KbhqQDH6)Lw<6bhYy{M%;_GoXx zJ@=Ze4oso(&bC(_O`a8%=dIgIwV3`{Dd@@ng?I9FXNXxuYs$15>S+L$KnE=E;tKN1 zyT8B#!a-}Ky`_rb4sL2>DR*=a9M!VlZ|m+jka7I8e#ujd8LhqnSVSX1?{aeu{q&;iRNNIH1N5Gu4o?-3@{LZjv80dfcT zDk|A6aieeKn-ALh*f$bNMKh1+6vl*Z;-5`>^m=r(FRpQ`oN*0fsnVEafwMxpS1PFq zpo!O$2vvmeLbspsT6}DvXY98kW7~dq{mKe9g*)dlFR+1zeMBrY*;3?n>{Aq}QLL#i z!Z4q(?<%A-=ecBku|=UMADinLZnHgw`=D>pOUtpTnP?w6uDOa5HkljXaoHPd!F#?r z$A{T6dYx@O=*9I|#qJQnGa6gLwLpU|`sUeYqM=Rb^fSEgWw0U+;2mt4VzCK&#wuV9 zuBbJ~lz#7gWdIgH>rGl{W{+|mO!OXAO?3;0-%$uX$5Y-hZSKV{Wb%|o3IX6~!ZJO| z-QTQ`qr8tEyR4$SzCQX!>7W6=4q1g{{jp9L9x*A@)uL=4G{lHfjI(@dS|5|?Fr8Kk z(vIh{oWcGy7!_}ieFV@w;)FP;0r+$z2P}7RyL2Cfa?YC-Y(%ip#M79g!qa4j_S02N z($O`eN6QsCJx`hc-WLEcUzNu&5?#U9J_|?1b7YcgKEf=8_Vnqt=VTXeeNj;hoN^>25r9 z{t9FjkK3smft!kxkJE@hwJru-A&9k}mLQB!3ckgt-C)bj2wClv6`84S2F!Gpjj+sR zgKAGS`~ZA|!x@v?Hx3Zb13KZPP-#L)K_zR~DkJ?LXv=)Hw|#fc-nhfU^fqO1ibEP@ zDl0aGB5lbEvbrZ1SrL#BdRVou)lVsTNZ%b=eV_I9YxTdl@Rl)idBAT}=so)=Mq#1N zBkQQO8W+54@X;y$MWe!&tN#;~a@f{2b~j69vi11Pt@Z4yXZ1cG=_XDAz6GQ+^NVT~ zYi!aS_v?nFi3Ttgrx%dHfbJSx%=))yOK#hnd58?hvK=~}EXh6}MuqOq{4JWaIrfPL z0u53yu0v6+y^%NBBWKtTB6us;0l zPLdDLNj2CgPh8)aretBQI$lV8wSVe( zY!;o)vhNt9-fjOFIKF0~oX3oPD)N(iQtk0?L^##V7$IbhxIM{-_{x4Locat%x!AHn z+Q-*Ex5X9K-EiKNmlI*Wn*-ouGNi2@{GN8d@n=n3`l~C2hyB6i8FYjq1t59`QD7-9 zD8k)^vofpi4#Zx)$5reZe#*H>37?cE!p#<~;hC;42q-LPmOHJCY&>&JGVD1o^5!es z`WXXdmhl}^CVz{Ck$m09MI8Kh<-{;_(Mz}-IbrUKeGK6Zpc6oIs!`GCuIP-6(o`cJ z0D8`#8$=BvA~N!vom>LKj|`SGDonki6+j;q8}-}%Y zbx>n-V(ap@;iJFZRnEf!q)2PE^#S78!d>6!Imm%j{;WgW$ncL=QTJi8w}2VI4FC;0 ziFc3;^=eE8W*(oLk<|lMkb>(K))C|faxnYOg993k=LgfcNg(3_2*|$ ze57iJZ9&KacAN4H)kz}2)z-%0c1rsH)t22|vNcx#Mh!K5WeVK)ut;%ay zzJog6vm-yUk=6*$9i^`Z3Jy;nb&@^a*H_pwqJ{^@%{xgRdZUG?DDSXQWox@+;xK{r zhI-orsLCddF%YayGNiYH4FuuGCVrf}dC)E? z$|F3SoJz{eW1HCoU^n)#PaNKd@ZFRe>L;S;oKPs6^sJ7lr>{F>b{?=C zoHILy&%Y?~*<)+}uw*astZoKEE5NhZZ_gbetIjz)sdo~waz~Rh&R&_e8E=8( z_a^DaHttUk%z%grFXy+!!O7Qb zDa!AOw`nnX24wS4RgBU-o|=LMzp<Ej7r=Gw3nRE{wx6#bnKIqOkCVZkmd-5%pAu5_`VDTU)B28&F{dC-+ z3gr1e`fcIH5>X*_mEa;y!nH&0M~4BTMEH0$LU9uweCJ;)r@P@ZNaW7_cf`on@+g4< zzn4Trt-sd&VWZt^OteLvrLW{Hh$R+F;J4RUYz`cuyx}>cobx3zhu&y;et#xJ)}&Hb zS#Xo)mwVr%T7w1w@<=9dbwrLWC3BZ*P+y6db|qUDYd&@LqEtRmpi0!P!Tqeg6RFwy z04iZQfldzs4dm#ef7Ew=tN93H0vgm@qck-^*G$^|%vI|pGY&h|j;<@Dw=zziL8r5H zV|ny?u*6#xz23Z2-49>bk$=dd+q!53A{VvE#;J;A@fOPilsOuYtvM0$#_6E=$gUeq zK>Dg|kUM|ieru?rWdDuN-*`LvKZ8UJll+;08TTB3@^5$6gM{Exs!hU}DiiNi95cWqpkPWk1G8IdX?S0#U;c1KAQ=tN{{(31)(pKVdKg9|i%bblu> z!xyjTWphP9`g9|tr8oBllg)2bXme>ZAQ3j2@qx>ojF2mPawfR=uQWi#Q5p2r+530# zX4m;jR1m)P>widIu4&UzC#RB)Glh=5y{U53MC7bP6!6E-G2zz41X%VeZbTWM;a|YV z@RY~4WDEByO3}{?3_RTroOFsC8q?^R(@ThOZ)+&FFxyrUPR&fp(8nBFiF}t$=-dw0 z)(9B>%<9R3U`!noT@cC-yz{|0oSYkDX*Ato1y91ru63u5B>OPR_7+PHNa}7ZG#4|{ z2fS7f7STQ{vXOUJ2=8Y(7ku5sk8WWGBED>%3Ko$Q4WvGz6Hk+SsAqM~6hsJ-eTF9axKda-T|R9sGT1hbho&jBTmL`!jr{m!X1uyy@du-8HY5JmRfkdf$TB z_Zm-+=QjSToRI9t)G{k*UpsKDxpK`THYP(i+9uO_~lTORS%; z{3M|mL{CWH@S|lK8GM+fTMnq>>Q2{Ay!IXHbfVYt9on42dp09}Klhrk#c!zLiR-<{qrBkXC`_@E{nG>5 zBXy7K(sorQXK`4W$@+LF$wr^>r^}r5_qJzq%!|(WO91gxnh&xxmS2GY2iuJ~H#v$_AV==|)&C{H_hjkX=))%a{F8=Wq83Y$MpKVAkTX6R^NTTokU_iuYF{bw`szQjd8_`tPNW%CX8TLlS7b&+S0?GVf1TK%$z1 zl=-(ksDVcEi^D+X(>BGkMl>!fQOArI5hY4jm82o#S3DaEmm}hQ4io2y)06LtS3oLH z3-&@S8a+%N>Y`+)ICiyni1^xuLs<|w%+EFdCYzNvcVgWp^hpayZY8IhSGc=Lr+Nu+ z&Yg6Xy!xGFvdJKEmPWR4l>`M06O|$Ep}NQTqlNj6H)ifmtA~VLX_qu?BTEFuno6Vc zguNggwDHNIW0;d9UA56#*60kH*~Ox9(!2=j^uy*6 zQX}tfl2o&oZx^r^Ex!`dd1_Ddje{*qiSCK=e>w;OgZbvipHyn0eG+8UrV{2HYYcG6~%_7b^aKTQM z*G34Fz8PnRQwR|`(AHH_6S;Z+?2uldtRfwMYS2PrHas0P;L{PlQoi=i+vRyM z5qleu3bXNBDMmPWZ1>F_BmQ)CZOfd%z4r52GC9TKF8oQ#Ln0g8@zt}2yJx_1^$yNL zf;`?NKB2RH%7yg@z|2BLImlg8*ardji&sP;11waQc=7Dm~Z9F07}@JH^B(wUHydA`o(&SFnAWa6$m z9GH^j+GP6d*~$%Y@Uy;2|0fO4#*l6;LqGuJsRucsdri&emBofcXC{NZwi)a>Qzr^VY7^8TEDZu*YJ27{T z=Y>yMl~r>i?qs-GOK~8zL&g|LtE&ny9@PM%X=IWQ+O=})?Cch7z!<jP!Xzy+!oO@FM7M?yd%ylDIJ z_fliGOCVmB`r{r;nN42`6Ln{`7-u?L;=%lGgRvZ9-A2 zF1J^?Rf{OC`9%_q4+gahZ#?Q4ww`>b)5lbu5z~<)mb%W2>h#rN%d3o2ymUDEY1;EN zw0w1ZWNzevu=Vx&+9-1l?haIF{y{JI)80J=wWdFx4Ub=%xIv#@FSk+}?j`dSAEqp> z{+2`<4fn5c(3E4-HA5KQGZ!}2Etz?+?|7FI3xj3>jFqCEL3jnqVF;koMw_%u7`e$p z@kD)j$P%?uyQ&ZWtg3Fwb@X;~Y#xN!5o+r+HhIAHI!1VNQ~BnW&WoJM?HjM+g|qZ# zhFVrlD591aeq`ncmWOgc>^Y{9K&NYl*|#h+-#f`M>SK0ISmhxFS+c(b)z}zQeFVO6 z)NdmWQ)@n48O!3yTO@g4DHS7Z@VM3$>bq|M-Xf51`V;oW_2v28pPRMhFvIveTB+dg z*K3>iCb2@tvFzJbhWiFUYsCZ*ePV{Y@5qUzug6f`hOR|MaHsc?hvQ%n6Md}aHn#I; zjZO0|?_YGpe8s5K0jG3P8C}PA(-*-h_A_*3i!B8dF3oh@>~ENRkHh->ig%LaG!%GB zt%{H43>OYq33;u$Gbm0XvZ_M^Y2+1D3vdY^%2Mi%RgUStzI(Kk|7H;6U9E=?zw<@R zFM^&@qAvzA5HjhESR?P2Bl&0DzK$6W^xd4c0Rzw2h&Z^=?q zb@`BvT}XRr`uoSHyax5=gHXiEi|v z+Mm%vQ!?`)r7fKq@{D;9Pja8?H^1HGEXI$Wtc_Z(sJG&UlQik%mkIkD?noaxDsn!z ze@{MjZ}d2UQXxD%?^G4<>9>FleEB;?XkFa)9w30{4RIpD1L+Kqh(tmNi;Rr+aUuwkl)glu6)}EBD$AXmLU#pe5&9o zA&X&z>mheh>f(`6-iC6Dmn`#A2uOr$a5Tdh(8%j(efC{}@@{7AYc_*PVL{y2-L~Cl ze_C7Xb0}B8spF&ftc;U2V}uPv^d^fBFqFa&vUU2d=`d!eKx^{?V#ury7stiy-Tuu3 z$KTCcmKjcgVXWM8?#!8akDNp@ebC^C-6;x|RGD}0)09EHcM^V*PK771yvfLexHxj= zEt0sfS|%1JQ+(0rAF_s?Y`p8`)r20(v10Y3GSu@qSWiq=LzwN=!AQu4za=Mru^KE&Auu~ABA(oQdiBxUC26n0lKeOI zt|cvPNci_N2ErP|#9p9!EnG|D$<27|?&mK=tj^WBfg;U-U#Mgd_{n^aceh|#c4)dZ zg9#V~XZYOnV!kgN=TOrhmM#k2t>6wP*69lcqyriCUHqoL}E=$dZ zBN{d#V3n`+_HDm%59QeqjMKsI?vb@Gy64k=yKWRgzDS<&gsz&%sa@S1zVn3UQ;eM( zg|+#V%cg+s>(xRc_=p=O&j+m=M!vyA^D}(qBt5w_C29D@@!O>r@t>$bZte~k*ViRD z<2f|*Zhg|`^4H0O(>*Q3z{$gW2jDuRRY`7Sp?nf<8+ujmTC+-$56qzSo@Jr{)XtA& zvEC+vP%`(?LiP~l=7#s=bSXnhNLw#z$%Z4h!t{~%$K`$liYcwf`F1N3sI)2-nNRK` z8hVL+Ahg><-WDGhcC|kVl@G;-HRoceYcf;aPVQ_=_-eKcsN#P#SLp3=KzNB($LAUa z%%?=9!t7gC8o3*rT1{E*E=gvy+eDOwnTT-H#1VH$-zJ*732@-=AuNwsL>aQH|IkRc z`(7l7-M;Sj;%$B30HqK5XG8VuouC*^&-~~30}7vNCAM6XZykN(F)Z%ZNi>Aqy0BCdBwNCyjb1YK=lL6z#^l;uO%h5EgSjPEY!aD zL+Jr-P`W3d?B2JKQA4U+NY6(~rQvxj4{XB2-hsm_n&0(uE;xUH*CYA?b}95r?w4u1 zBH#*Eb81IMf>#a*b@e0X8(n|>-TI-J8{P{q6aq!~fUCyLGNu}yX;_Y0=D1n5q_D=_MGoP$#=fA;I4qB8>%HXq-y$A`b?r7k%vV?<$w08E%N-;7}SDoHl5%0Ei z@Hb%><3CoBamPDD^My8$f7zBq_jw; zXo(d_^+qDY)*j0w?ZeJMH$|7zH@nzDgCTT3rUDcaOAWX~u?eWLZ^2j_6keKItF zhD@ehi#WSD@&~IQ&4R~KQT!1spTl9l8AZRIu%EVJ{fM1sZBbtAU~5eAh8ks*jB?K9 zk{e=C&w$gScU|f zWtxI^OC7EIoknmxo0LaN!n@ZHZNH_F2(v?ikEwzOyi2DEXJyh2M-grH%_x^E2m-BF`t3 z2+aJ!;@RAG*->`Q#Vpf02~+aeek5-F+k=>8KJyJFJiH^-TKp+W{b&_oXWf_fOr&iX z>H>Mpz0qhExxSkH-12V6Gurmp6=GdTKBTm~QA+#q{G{sjJ`mbsFe@yJa`mvC(Tg?2 zv6Gb)xk-r`xA*eQ&nI1{w~9YYH0!s>#+ASH36>rb74q}WpWOm*Ex95Q{T60)dS51O zNfHEfTfvTvtI>Doe5-?m9>nQm2-oyc>Vh=eFVfU~VK=L5vsgCW;3? zvp3-D6SwJ+`8K_e$xZ7qc;rbv*{)l@|M#5Ik?t`AphCj$kDPcb5glI=o!<**Hw}I| zBM#i*^0kFTt3Rbo1wx%97r$^``}nGYfW;fqc^LPL<&fW>NoUW|_94s3{beJ*)u+un zhmP(hsogi6r>}k!P^)U%b&dIC!qMhKe6Z7Y7`m#zMzn(MJK4VHjXtO}-oCm(`y1so zCHI}<)ysD40l!CiRAYC)E9}Q-vs{@ARK>d?-$iQ%g|{3V)-ZNjG4W=$yvb~)dUi8; z%%fd~`TBl*w~Rj(do(pYQS8{t;N-k z+lO7VCu_zWxr2M7MTQaNVnT6Ypj`_r*4}ITYGuD~-mgaB5&@vFhWY+A4!2|M zq1MFLFVlAGH^|1R7#KfIvJd%FCh~l)(P`8c8Fu&q?NwnSPqJU=Ozeh@W+ieGk(W-& z=#HjTxmjk&Rqp*M8oNaw8wVQr=_FYj@zt4hH2!QR<>`U|vKnnPouA@C0O8vy$i%{r zvRG)V4V|UL&CGNny)tQ#v>)z6c)e#<6pCQ`4Rr-mmCtk?{`~Hc=J^J=;$Qfo@6c2K z@7M%z{XL7j?b?q6D3#u1rP1-^VM3*maTmN$#6TkrOQNlRO2Pg5yRwB^Yrt#k!JCt$ zCpmY=PLD4~#)6ygV@IG^fAywk9b<;jEU;BXf{|(`2V>I1an=a|(8O_ei=t&OO@(pd z7t6HKc53h`r+Ty7Se8=g=)ESu*g-C$55$T3JlVRa^&d?_dtP3*K{x66qSRsiuJVq9#W2GO_P zWU~wQ{dd&_p+JpUvMc9{n=w>J#+!F$fggzc6iBw+o5$J#8dqP`jMg-NZ%O2groL}^hQoP6Y7Ghlx_u-fCzn7bIF+WYz6(9e?x4K+8H((GseXY-Ir@!!ryV>|K|5r*P{ z4CB1>YcU&dJ?DP7vpxU*-RG=x0S`dNOJ5UOW=j6teSMfOJRU~Z8}#_pLcD0nhU1-? zzY?Rvfuq;efQ0MSH6LeQF?JfRN4zJV`#Z0S58j`#I@o>5bFlUnf80bGb-M5ZIr%Q^ z0g1%@g4_{j0_5&`Y;xl@OHS?CS0#NF(eb411pq$c8+jtDL7rl)OacY=`MU!4OhqPp zG7qEQ1~|=z1oed7a05XTU6Uh#$aLU1`H8`JB(Yb8EF}rU3%*V;DK$Nw__- zZo_VE^y7lhkE_sQ(5#$dur@=~WYzJ3Yit@3f4QHrU)-!e)dfWOFbC3ZZvgg211pQ<8AJSc0+-&B7yke|>wwmH z%TI<#FfnFq&*U7tzt8x`P~;5q+N}G5h^+w%3fuULPRw9skYDo9aMW;{&uiNFyQc zX!+|T?Clfa)fa5MD{b(Ymj{kGjCqW3Z}@!(?@>9{pTq|Z-1*Vo%X_0=;A4ac{jNna z3Se-Z5tHDHrXF*BVHt1tC~fWY--$P+j6^^eXT_=8^Zf>N-EwRQO@*T%g)mm0)tP5{ zdx)7@v+$u5&^1-F8w<`ohc>_wbVv2i| z{p$OWNSHxy_?P_-bi}7mCV4_&LbTzN@{xi)F!og5+{qUKt!~4}Vv;$QmT0S)HZu@% zy%c}7{fLP)PJGvDH zDlx4poPP(7^?KuNv$ienjc$4GWB?BFXK)M=gP^ETg?_`RPyzEj$7FeDm|*`1s4&EP zH<_f)ZO5$WP;k;cZA(B?hL#TEQ{4)1P~w$uRl($OW>VZ)Dz>nF(1hA0&Yle%u4jre zz<>B_w>^;-lJh>yj1N&nV4&QCOf@4X;v}TL)8@slw|4x)hj>+6d&+WwIp{1YTFTqh zN&^z_^Kz?n%$m#3-lyK}G5>US!v>we_^vIj^yqNxLtyl{A3=+9M6P(!oM8OZ-9txy z{`9eBeT1CD1SL`a!tYKmm>{88%T1N{Oh?0lDnv+haD8)CQQSo1HIv&VQw$*h2W+#K zlz2*Wo_)09i}CH>*yX#NKO1Ig)a<1Fux-W6Nc!P>e^O$zSmrvQS`s#>YepQwvaiR2Fb*%N2`*uf03FufiBZ+bj6GJA6S`ujT>ldg>SZUrZqV(iNiFR@N8 z?0c|V$sNVFnY)%%Y+1hl+Cx1atb>-bUw!+sy;1f5F!dI0QN-)}@Y3C}Ah2|&ba$fy zBE8Zn9ZE}wG)N;M-AFI6ba$830@Af~3A`7cbH2a#FZj&NwKMm#cRkK)&6I$%gpxCk ztoJvoI4BcJ(bJmu&W|*es&P9${Js#mU{z#?#wQVU26qj`9)$|OLBi|b;hDsLea=p? zDKP{0gLcUfu#TGHQF>Pe9>1-rvxaAjGxPOn_QSDiEN zZ7dT7z2qC}leW3*C^SJzYA})6cspGxpQ_qzy#zO#R zb$y-!#`^m&wuCO&6G1caX6l;$u??aE9bDP*I$^-SisB^DN54;9!VGG79*fXnD;n40 zI5ftenn(-Gi=DKBw&PDBdwuIyCr-gQ-yI++2sCZ9j`}u2X_i0t@Y~x--1i&KylIz$ zj!H?PmHo2<>-hsph%O-k7~^9+)LirZ$7ExZk%BoQY$bO|p-j5qn^k0qZavMMt*zIH zvjy=<+O@TLi7DD=0sJW3{X|}eTT~Ru=WUcDUtsH<27RcCXI*r!scJmaCBcNaf*0^t z*%_+-eAUlSx*hcAInVl*zMS^?u=l6|f8>5lKRViKlScAdeaNq{5+{sXRGCc^odJTr z#Dz&uZ^KRNKSA^^??y%0SN~@3+pP#@29RGWPeZY_sGYG3N>L-kW)HT$m2D!}W^bm> z{^XL8s{6rWH!cS^V?Yq?p~K8vP!7ribVb!t%R^|Lb?1W>aOpfkDF%=%n$w;7LZvW! z3)y4d+K&R_?e~h@JBT(@LXDnfBL?Okc)iM;^J(4HGhkV8?sA_0!Aot(bw!Qnxt18!O{ z#Pwai9$tJlPl8z}ozBl29{8CVH?r8gYigj6;M!$|e&Ooyr1N{{X->0}Au%=s4FbHt zI1hKdVLNhb%&`PyrGY+ncZ#nOj1iAJyr77+F9?9;R)v0rD8G1yy`K`{`VKozUr8h% zh@RJX)uViGGB>26-lDZc9%pche`6RS`-~Mu z|CoU046=c)+VM&sI*Tk%C-M?mnB!0;HnvZ6;8idGvLKIl|IQU)ke6_9zQZ0)!>M!yZ{D} z*PSzgy}3q6J^c|VMx>PGqoRnbUOsC;8=!suM}xqI@6J4j;)gQ;@~i`g-Fy%*=DfuL zd}SlF*cw}FTU?!M=%$VNt}IBmu$Q}Z7SbeXG`f}ikSGEf%CfPziDlj!-z791<9|cV zMYr6}|Kk&vml_fw~SU=_D!H85S6QwCr`l zeh*IYMY`D5?_-+9-`L*8dJ7QDi$&d_HudS|qkkD$HzRSHsCN6)lCAJfT8KUkVN}reh@bWq&TZf(JyOzNme?IZD*tcPC z^^G!l0k_XtECV;y4{xefZ!j?OXYNK9wf4fI24Qp*O(;KGz2Geqo1kMNNO(BLS{-w6 z`hs8}W;I@w3Y&>jU%&R+W@wxc)_?GV43xy!KxXN^9Px4)rjp=@CcLV~Cy|Kdo3A5p z+xoG+M}MFXuhtKab-SfqS%Ihqj9>hmEQfWK6-z1D04vqQ8e*5fhmxjh`;xS|OW{$| z7L=b2r*m66xEhU@ohOtK^xc?JC0E?Ld~Vy~7tY8@nuHUGYImaEo756Q z*LVdJ{kF>P(E}Chfry0qMwugCae^V7wVLppJmLk5yfcGVlpHf5K&A)!ic|(h{|8fo zr%N@JP@OudI^=HJH*mA>w{A69hP;3sO2u`t#$}_H905qj=F^~K`IlTIF1Yq)jrebT zNN`tD=#BvXqZFv#ma-t!vHE1HJ>UkYfBtPM*to88ljSXJYt=-*ZX&nhE{`~E7NuJC z+qy>S8O6bVwC7;RZ_lq@y1dpur?T)g*QugHX^`)lCK{hW7RtC+T9b+d4e3&TzD`?7 z1zzbmnRlTPZ!@1(fgHbQml6?p8~`f2JS`D+g%A1xCYwhyU4F3Z)lJ8KhvGS3D__N9 zwi?vsqux;;{*k1*-2*BQw%BRp)eKh8wn91-<|u6LfVdl_O2!5HOn6rKz4HeOfJ{#19f-unvycmFV7##StB@W^u;L6S`$ez&9UMNeU5KEM8Y zZrpYSo1(E*MC`gUg}h}Pt~XAO>enrdpJkPaY)7AZ6*2XVvKU`75Rq)f z{ir>SRIFJ=hi-KZy4xpS0?V*jm>dS-ywX(45zp4S|`&D195YP z`+8#Ft&ikI&W}~Y@73$9Uka5#kPj|Nf+K7ZIxk+ZLT`OO6es4~hR>E&IwW|Xx_ii| zlVtC-Fgv@>%_X-0pgV1B|Ucp)kVD;rQtJrS^OI@^URJ=OQ5 zUzmS0SB+KS#$H<*t0@#=?3r-2?r(=@ z2dHi7;V{-|7EF8ejbI0+(*&vGUyMj5U+mY{YSssq-|l|}gIQPADHei3Z3T0_R!N^F zUz4N%=Akib0-^eeb)R&2t>urs{*3-X3(ho97)c+H3m-kpMLhj3wwi-v1HSScehc`< z_rF<#l|~tYLtOGWQbrkh|4 z@Y(-9zaED|g~LPRs=J3J7O*ce>dKcBHZVf+OA`w3?piq94oy**a~J}w)G4o6Xtp@L z51D@C=xj5)_k4*A-q>ZFPQf?w?mzv38$Ac>R8*jiAsixl9GdLca<)68O4QPpZKB@@ zEYJVp4+gQPRcvgJXDJ7cWYooOfC<${GHOcl7%(+AjRHgQq9h!@no6z&lGQmmtrMBW zZy!x?NElTGR7Bv=`)|SwP-)opTGoB=FDKVr)D$(V~vobI!Ln1~suR+FeLw z$i!WKD--U%W7O?sbLPsVTK2{895<+>dk392ZUl%CzAN2`0BV5rDfj}7;bUdRU*Go)g3Z(jcqv$oCuk-+{ z{Us8O-?&$cjYpX03nAdm^oh?Kd+Jrh!@x-u5?!?a%KhiFy}ip~J;rBFBz$1X36bI6 z4yetFKUy9s`>GNq9z57E7oJHRo!9Kj?kNwCFcYGxD#d z02r7&7LK;iNjG8LKI9@_8tlgK2L4;mCBy{nIvBroQH-gkl2(|Xu~*9~a&K!)4zAOu z)rHj`W})H`X>RT9@?F-7G#k89-|Y)AnEjNo%Tt?VD`g6*uK#7pSDpDGVCSMoA^tN4 z5%l)2Jt4HS5IZ2O@S&F}W0$YTILaI{~xqX#&8C=YT%$8ynEn5Xp^<4=l#i_u!y%$7c*1F19TmAbZ5*Va=(par^Dx)PSAgG)u&0afTS1?wD6><0UiE}1$P=>#F<_H}$Rg)?8| z&8fz%nQS-T_Yp|{I{VI@Sp5t?>pmT?wQ}n6%!_(Y!wZBee=DCA?k5_H41ZHnv7G9$ z<^L=@xEZbdQH;83f*xaZ3<^p}WZJP>)0r@x3Ig5x;Zoe08=_el@&ay0J08Gr${?VA zWnS_LkU_ghl5Z%oBr=~Bt97QHqG1k$-HsRv3dTM?d{1*e z2oExjC=T*~X=o%0NEQede7bm0$s`=`wz6V{*qUw_twsP#gURND7Qz#d7o{cqMVFUy zs=T11xoB%dsVLR4W#JCdafX6h^C{SXVaW~`**_t_LnH)$IwBnSdZtY`t5I|9C+*yg z!Z!qkz}Wd92nBYnnrD0aekxw-qSA*xf|FCJ)J?+qp&y=d`i$(>+SBKW#34{*?%@o7 zhU|0B&-s*g(aN{>KOckq_qF!Pv{s^livv;7OF8~pe^zW&aN5!r$PslVjI1Wj#rt?q zj5H@S!qAQEa~;^}4;4^pD%`2-B0qbv)IP3a8l{A`V2uY3o#hVE?$mPc@@o<8QuQO- z8bhu(HpTns5qVn-N=edUmc^-?SZ-`Knf}cpFC}5$Bk#FUoWhBBa1O(i1iH>8B6k;~ zSK66N^OXp5HI-H>e%W<0du_xeTDwKHqzefpDx~$0T{TPV{T4hg)<(_EnC=jGr_VAh z*#HY2v?0Z$fr<>_vuRnBsS#am`-WIqYgiYiN>v&1UKII zY5wLYKWzACvAH^vcT$lVRDcWmLbb2z=|HvD8j92s*rfN#*!jl_AQkwk)5#rCYZqD^ zFbFhw{!Xw(z`U*%_A70nFw#`>igiSgypk8-@2mKSx>{M6KQ*)w>pJa1X(L!(r*i4E z#8ltrb(e%R)>^$-V^hXNwA;nE{3)rZi(kzfc^JEV#SkJ%6V2G5mZ z{(9|Ti1|THDd>>xKqYq1=e`de#a`lS#dFv!Qa!t|Z@Gpi;TJ96Fh*n_JF#6Ej~Ca5 ze0M6dOe$ySL*TxLruZQ;+cFmtWH&a^7LCplH0lk~_IY%H zU){1--kHjye<%Q`6{Y4mxyuh5b7Jh{^Ot;LM3jV*+Gp>bVX|a+P~;qk0&&|VElods zOhr|S0n6kIP+Hx&kzP1g`w`r-P_xLK6}IgDbqgFhRu*;iFoi^~FsC`zUxpe_xM7{$UjW{0mVLvZMi@0_*(h!1cSa4LrViNLwUM< zR^Gq9J+AXva8Jxdn>WQYaw;vcuq1Cw>vcINfePG(CjBLbKKjY%llei~1n7oKJw zIKEwkmJ?9LYkslKgv|w#MXd2#%h_!vh2|Ap1>4Dr_pdBwi-uWc(y4>6kR2Djylyoh zivoTSQ$7)qoF${t+yTwxjqltc3=CzP=nKg)l56!rpns-!x-L)s;vrpl%7N43M6XuA zB8#UOZG}Do#P_?|0yE7?p5oJA@Db9I4zh*O!#h{?D$qoCtp*|RxJTl`Q==@pwx9ci z>T)(CZL30XcISHI9gVZgQ~Jktk(?!}NWr3URB*X4Z>t+KhIi*cRNEoTBdq;B0p{Ac z2J0CGo4{8&i7W!Vp$Dr#LQ)GKFqMik!{*~Xi(-@Ed&)d{kl^)V!7|z3$-JA1oG9EC z`K~jL0-|nTNcfyx92JJ5R+rDR>Jg%av&)*yAHleqJiLXsFK3eGvBeg>KN*Ne-Pz6J z->Z2EPo)h!gbBanzOQ=0|8L=cwzvAa1s~j<-Q2twWb}whc*C%H@ zqE4#P-Erw@1p_#=(qMgdjhIF;r0tzYqu3q5UgVJr6|uY>zI+*SMAo8C2h=Tj_|?v6 zWj{8=go|rpU=vW|cCQ)VW<68pF3q#&LtDM|s-b2RJ-@pi<}g>&Ml}eh;|VLkIg4AR z@=}lh6Nm4I!W5`(*CUEeK-GlM^y^kN-tZ}=JSeY1wpS`s#GW~27v%mg_e3kzWyC!+ z$CcwxMcrITJ>7}#PF957t6g&6=F5$HocYI_uj~v8;BsMEo##UW%TK#^XS>q^PJx5L}tVahz5}q6O=IQGRvnla-sA%-$`&87AMQ z!tu5lU20%5AcOnTaOLwodxIx0KfroceHWjsuRaGB@lxRB`#~UKdsxg2B8$e&?_EM7 zrI1@S_ro8h-&1p=R5zJ)j~{OGwEY+4n>y5oSza%%CA@i^@4bZ~)^{CQlJ0R;u|`7c zz#=;-r!}D}5wT{W0dL&V=-K=wXBR9mi*jQA;0M94N((RdgEXBsIthp3j*cM;*-P@# zGEh}1@K@E=Y@*-%&BW^RL%s=SNH$_WXg|L-m;GB%k(gY^X1ia(*`ON)v>Y=MtU}!S zWbVej#migAS65Dtk*9k6OQhaqC(9vC1}{ml71uZHXHY6ayz;wus294LYfopK$@|8{ z)ATPnz!+XjbVE+ZGqRnYKINZZf|?}Rh5CK1WR*oBIxg-Kh2*2kvy%gduN&??=`h!D zyC{mz)t9{W9W3qTUxxgZ0lP1|!KYW(5-ymlwEXs(KjWGttR~H&fUyxeKWN-*z;tB( zJxHSnHb&$I)=0wxlCQc(olDzu8G5-l-~j_=*03;!@N(E=Q|8)h{|}76u806`$4@X3m7DbYY+m4amgRIo7 z>Rdu-j(Ze3kom)2@BUUqFm3&LGGS*JclctRb%Gj}cW+t9M2u-*0uBq{RzS-m-wAvfX7$WwA)<{ooz1g~( zLcH~?8A2z5S|`IiPd#L1r6eMAMiFLwfaGMn zR2e+kY3sAVoRo5hhjOUDq2?L}o>Af$YH+^hB?jx7 zO6&ErQa@MFI$tG_V0+_x-n|aL3c3I5FErssgX3E%Z1CcuPXqR8dZ%vS{Ga^F*x+^CTgXj%gb_+C!4dqd6DYwCuIc4ME!75-U!UUH=} zi-u@A8U#$b5eK76ppS3wm$vN^Lx;}hTtnr13sOtj@=72FTgR2K${|M9J62DUZSmoZ zC;(ldX%LVxR0=qayWrP4#siopSFkfm5&RuquHdMrRd0na-aRp=geZaS3&Cr`(@`(j z?s~e7?D)x2-ZfM$q8|(g&;+Ex~ZQ*I@K{a zC=?w#(Ol5xW8~_)&okkf*6FUr#Fge^``D-wwOxgg`8fGYAEtBBS_HJ<-dHbsXzY|7 z-v78ur1y#{=zh@St|Hz~gJLMv#`Ty1FagZ9;9DklT6-5Rn}l+Ow~^bMgXt z)Bn==jhHJ|qp`;}MhqO!H@JLzuiw=qVshzMWdwt4Eas2BoA;eB)DqMFpBhTpjrt#U zTbgy0a0GjqP<#F_@$Q+o$_D^4VmJc+^Q0vBV-e+cPv}IW{?R9DE~5J`vn6dDX?Jx2$)#+OV`EQ!DOz5M(ZOJ#of!s4s2~B@;&`s zBqq7S54kMGk7NCvCQ9Kv=9+9ZnZE{g`VbM9^kN~)3Y?!$ZZ^=CsEi1Yj#K5Tiy)X1 z6CoG(aAA<~Bf6()iB1k$;C5$aMWT5!iN)gegLwA#Q!Rz5ci2CAzbG>W`Y=H@9EodWqj(U-Y!|b+^7BqOYf{p68;J2|2WSs5Of)WN;RGHCB}22Qh$6hpV9v zQKYiP;*0y9HYH+Gs{axAFIpiSvC5YWiN#bIuT8D%Qo}wPjX-8g(A~&te&P^8t+iA3 z+SV~_gY}31e46ZGU;~^Jqc|~mb}+rNv^Vcr^1gcs!?|vB%!Tjw^qGqVVkSh%f*25Xc1W?9_0iseIllhFchYD7iAjoFJY?RjNg~KIQc=-2H0;H-Qu?;To~X`91#}J zn%vx;PkQXWNdo?VAOR!)o~;3jw6g{=RqxSawmWYAevbkZeFb}|V-hfIzXxZlPT}6U z4#0Q}F{bPBe{igI3&1CY+4W7$lcH1)2=iqRHm-g8pL}Ohfx07aHN@-@RD;a*z(wQw zujFKqO%vW|tr?p9(hbT?u401ZE$NmvDO)tvNFE_LDIQ)kvtwznc;F&qN{&Mmp?~X; zu-Zpoi(n`g=+t!gTt0we8#uzdeI#5qkeI~kiJ^jI%pQxcXSK!VnlG7&zx|Ux>e82JM4mG9C(?>_5nMz9rsh8R9 zbln?$tM&RQ@s%IHwNhAo(g2o$H??ipsYE{PRB@H$4w6da(}V zMgZ#5xL!Hb*DrAY9Ht+@3hJr%ePys?fPMWpO{S`@e7 z^j`%`FFGdZCed?rFg}UZb2*<+$<(rfWo#3jsKW$cAqBz32Y7z^G!ZVwUvk179-O|8 zFT#F!EMy$<+yB1rtBn1NV{f}*hs$c?$fRrnC-WfkSspCXRt>IrYD_H;gX< zaclnnvR}NCYz$0#A12ZB$T`?nLLN|%XnYWXaS@9>hGK%m;-7M|F)}pz5X^vxz*AaY z$mIqp+G@??8YTtl9VYU`H^o$+g@M_nAT<&tt4X9o`NUi_4lZKon%Sec5d|L<2HY%# z9iNt4o23Xg)!v-Z=cNh-e8SIaquOQ=egeH zglwCsrfgW`j8Lf1AVcN4K=jq1zp)vH_22AD!hPLPmDl{RG|$t5g_pqjPZ!cu{e zv)qie@qhAEtrepuABx${wwn*VqNJg-(@e1a%nSV!JILk-eIg(Mh#19_I(viTuQvp( z>)z66&|1*i2ps!Dgn&1-kjstxF5J+n8=8`VWE|b7X>XCZy(Yq*q|aDag}{C`9jdgmWByh# zm)5)_I4M_AAY&SKAFx)5wNe?p?i7oahZ2A<)%A$5>Q%#RqV#a-T)N3JmOBtROseiW z9#O6Lao*mI5_PPcZIf0mu!+m9%Q!?NdciU3N2cWMy%sUFMw%Z;t|9Mn_O)3&1rZUi z5JE&N>1odk&J4UAP~Cf~P72_TJN7E)w_%zaxBlEzdPn6435n<7suOcNfP8QXY3Q{# z3iCsNwyg#<*uIY_{_vr;HrnWo8SORZS_X7x?|z#Keinib zUHVRU`uI+nf+tu#j)A3{vcH^w55G7zf)BQSzy4$k_eoJCIyQUx-``hig-UpDa2pLM2EW)e&Cj$+{5MX9Zm9&v*>~O0peDW#s(-^KB-b<<=NZE7GY{R!4m1Cv$yj$; zO)d^J5&#-CLvq8v9U{b^e$}!BM4t@X0BYMwe(bW4jC6-%{d_344py>=S?}No!Ivd` zUoDMA02MT-(s>WQSzz__+j%(fl;bE+KiZ)>OWKfOz1fEEr)^pdPfd1P6HuXieDpiF znsPRzq#`N~h}LT%FHHNV5)XMZ-SjodXYlRFMLWz`ZK$BcER%3z}*{vU!i49Qmc5A zAB8qX=YKEPyhd`-Xosd!%6THm;-y5$kv)xd>|pQ!eE%9(@r1dcrm5feiJrsq@3src zR05`lNR-+#D@jQlSAJ{d%>3TF#gY-+fxz~)0m$jozosBI{GqwiN*8Qm56jMRm-`X^ zK;BjsM86J)98Ulm`2s6VNGgZX|s8qS%j5+@<@}d zF;9|Ju-ca9a4Nt>+JFMXu5#en7nonKPlVEkw|^fk6K?#ek&}7OS<8ax4#X97gyIwp zt*pmOIQUrwvAyw;Me9knnwdij0@PF3FF@z<=5XI4aC-Szq$Px=SY!S#{aMnP=4T== zngSfn?d(DLZ{dq^!T61E8aIKFb?lvquy4!W`WMNKQbsp?n=3MXY zpGQi9PHG4wF`Q%^Q}{UpKqtLXVLXqGjrt)>h`we;gSd>b<|qMIqT?+y6hZxjpS2JK z-2U>iy&+fzufueb-p{>HQx9+rvGgGVU*I=04+l03Rebtw`vZ794_WRP9pwo4MJ)xw`I6&0u2w=3(qlT zWXVWTS|w-Iy*I{Gg?9OL+~x(rrwcZ{NSuO{k+uu1NWuos7i91rZ8bTGQCEuvHSJW#>1u*NNuymj>g$W(tRAvtRYH*6m(M9Ilr8d>9njITc_zvn%k*GtbgbwTp@rK-isSK zky9j$PSImXPnQ@~M-0QwvJd2OPfZCXa~|u8doe~s$qPp=umbUJQd1S4q*CQU72l5L zub)Ttu@o3Gs|aN60gR)2=J2P}o49n^)qGA}QwEGrf@pUQct9NB^OGx_+~`?WwEyU% zi#xalRdP)rw(&eYQZI-vs7X|}jVlJdf8>Fp`qO>u$x! z)_F|^Ps=`^A4~J_i-}yA=}pTNv9EH=km77}z zhl`0QugTz{gO7Uz`o6UFxMFw3D7z=^P8I@`b;tp-=(KIj!>(6H-yi%S{w`eb4Ku1} zdj5vaw{^{AL7+vo{m4>=3KvlI#J}D%PEuILivmJ4??!a?|!^!6y z)4M_n`?)n?e^ztb_+vt^yrpNH;o{?BN|D{7#lGVLm-ih8ZLeSkdn_&<@&h3}#B_bh z(Lz_V2%MClQO;p^otg+`A%!KuD#w#)Zp$`ViC8UKH%(HImsv1>2P#<7$_i`18_{Iq zw);0{-%iR+^f-h&CKhGd+fbiWOTJ?+tFRR~A85SjN-44{f@hEJx62*%&Y^~dEJieU z{I+rDQPfhnwC((WaNMKtg~W1L;q3j)z@b2OBnl*D1EqsNegE|Pc_-}qn+TL=L)eQwcgcne~U-z{Kn zN-APIhW>}Pv?2A<6Fm;rD6ctn(@6XcQG9kguo1`hioi+Hj(qHPvVRM~>E+r51Al08 z-lJKLNfD}(Q)|m!23kadRA8 z*X0%v5BNCb4yDxd&j=3M^M6e}EhTGMrD1BJ1KN+wFKLT9v_C~22#6{RW+-N=o8H3w z2;_s>fRjfeKosN@L%SXxZP8XWp>ZC=UA)K8*Vgcu@LSKRw}c-V3~^eUN;mXpnGh+k zmldBDr`^ZwjlLvVjv1MKvCpwcSyyx4A-wU`@kTbmn{xDBhi|}hu9jRI8o7FPRokf5 z|NMYC+G9MGK=h+)B^T>Xh<-NcOUn zqWHdVY%?eWnxBV4au)xUB#%rxYWx)ipnhAe!Bh%(es6p4DM#*Bcz(;nOZ9$6sMu} zcVi|N5kW$@EI0~1$yP;sTb03~Sdw5*_qWts;swXGb&L4E&ToGpW=8XLMI}g`KEA8y zCY^Ylkt(xiLLW}p_8{vUB!l<ypPdxyxZ7Z)3{=)vm@t(&+L? z+Jx*`5V=VT!uIjZMhLwGkBW4Yd2b$^4B9AodH=XdXN6TW+c-|CWb_FHXV*=c2EimPi3Lh5N7i&GtAX&xoil0m9FoT(_a) zR&+4!klgSp3sFtnuc^PLEzrf@;0zM#vc*cP1SNin=imF!PBDqBfkU$ywlT4P*f+a- z&YViG>GoFL%V0h_6zi>EH!0yzm)6In;wqsTOUbOJ-%_9QCcX*m6oQrw0zJ?91+!A*z}n z&}Ea>XXZtonOUaMP%K1X)I+kNPtVC~yc?@P2?H(^=|%ULMSv=q%S6DQjCAy^QbG_2 z>#Z2`8)E6;e*ZfLJtWh)A<8v6@I!E%X(bM^OB_FN;K%zzE5j(BjX|+X#0Y zU+C=*#ig@lU8_PR;mnQ7@npx6aEeXV1EzGfFyMA|%in=Mk!Thy&i5%mL|_ieaP8Ak zb1rKti2U^=wbQ#zv!3t!=1p@YR$%miMV&IBwt=G^Y5@NGH~5!}LV0BaJ_vfQ__vvU z27i))L0%AR(E1_MDkie`XGX2+-m3n>NP51d*CHwQZ>U-YeBMs%oVA=FU(FAQ@z89` z`7K4Q(T$q^<;au2N&mh{jNiQT>)|XO-8O}SAi`lG^KCt5z#ow_+`k7m}zkG~#t>fBmUx?j;zm_6KOuM|!96#~%zGh-BXw~a>1 zI{!>$<=BfPT$-Q=S}7bZ{F1`H3~}PWRHgG=5Zc?iN`Hxuc>_?Yd!qlq0w>+b1k7>o zxqg+%e}*>DmKTSwHpwaJCfvz=$62+(d@ESxpODq@3dhb}NliBx#B{9qw21t2+~5;7 zy*y_I%YO95LkHe)(uIv+GEeKg@RXW=0 z?3=V(`H5HxX+05dKBqzY?7SwRGl(~yBA&*yOf~WK6g#muRER>S=#9AEdv2XqBGIA% z-bDt-t3m2aE1KW4?qlLkQtgZ(_|pP|vu09(4`e5;9WAv&GBlCuCnc~dV!IEo*kZe{ znM#E3;VpV7YaYmC(}U-A6-##GYIx2DaKZm5FWO(9;I#VQknaw*e7$)m?3HFS@Sj0MnRR22v%9P#k|Q1KU*7t1oo<$`;JL> zWYJ@6PL^pB4C@IsG4lPI%+Ggak1rLoID7bnDse#Gjt%YhLgY3mfsL^OrZE~V0He8R zf>p%Oka*$T;PZ4r#ujw+CL*Xpfp%Yl1HvNz(i%o=AYDm3alo&Se!mQW^@rt|wKXlY zcyr&*N=AOWM6C53Fa+U)$SD#{lWoaCR4Fn(zJ?@2ODP9`OT*9uBZ+ejU3PGO*dtqx z>0=pzo$%YdIS5FLjNEPCAS#}PaI(Q>&8O&1rgNJa$U2dNZ}15Y8PODx(`Di|dK^(D z-oU-g3$*yWkflZYQm_L=qUzRa9N>M)*3%kVn)7B=^)RZCn7fLngi@)2?N1s{< zF~`YZWb-XZ5KRKs>{=-kfx&ywh8f@<$w?mYEB07&-1V9qeQjSc9RBJ_uIo^sBu^et z|FHpWUObvWHXeCBN}8Kp{(7%ryG)mblj-{=9y?wVM4LQT`p>l$*=ycG;d=BifTXK^ z9#_CX+@D!8784yt_L03l1`$o{F2nC0-g8&w3!MXEq8!@|I77r7?{4}WXt2BgOWsu- z$N8^X4v;P_sukbZ%$cuVNK%(SbW1F2dpyAZL8uXVxvm@Wf~2qDBhsU z(7ejq$YcNK#XBTFHFN-^uk=j-E%(c}y&LBQX}$ubp3A=4oca768aN;POQ#~lE|MYu zl!K@I1*sPxpC%GQvq{5x(fHnW0MA8RZli*^Y!#Be<^#5^ zRgh@B%+yc;+L*-9r|#Tv|2@^BmPwrSwpT)MnHq{1H4-J;a~oYtFQEgU#qL1+lPn73 zYmV>BI7PQqT1#u@an#A?%(1FrP&N@vqlI1gye6wl68~-rX;aJwZRD!3iHv?M7NUQ~ghwD44Ky47M)$ ze8zdV=l=wG60?-Al3bHTUqd~OD5epe*DX-zmCKVKFD->H0Ap|@>1K1*SEY_XtC4=^ zbR?{*aRB8HUk>auWAnW7Gpj;f*amPC9F0)jFL*bB*xt9nC#xnwnA8^yc_02>W|ZVI zvBlaW%iuB~WlJP;z>{}5?l=NjLWDz<-SzhbgDafEx|>e6l7FzgmxGsyer3t#6(6kK z5vHN=G38&Z2PdUA=gfgC4$UF>M6Ly0wTL3nm_g&?q(lCop>$S*>s9Jp+9`U ztZ=w^LJ|II3x%Kp;wF?vGl>a49X!}_TfhO*I=A}?-ii)qskj>GS2-^-VJBQI~EBg>LA#AEpUn7jr z4q>3Y8g-_I{@G919y`i9+Uc9wG~lRx;UXuKrtDNBHuo<^q<}Kik4w@&x2VVTJ4$~H zm?w+}O7~HMBR=pebR_sW(T@5BBM1aP za}?H_hc+~SjF{ejH`RS}zkPS_6OY)OEC5u53mO=%e zS^f<|iEnVp1#lH^hU0@dth(b}QbrEf9+O$OMn-+x7`|LZQE@wm|(^<0BD zGAxRE49yN!E%|QEd1@41;Lud*Z>*qKOlUHtji)YA>XljjHs=T{EN{%jET>?Xg;73st$1GcMsf=GVW#Z^1bzh1!1vTclb8nfWBtUo z$j?rVNfUYDXJHsdA1M7iKUT=F#ZOA#2-m`_ zjXe!ew^HAXtKt&7cpq~2YTeHji}0tl#R(mXMB~4&Y*8-KRP^AJ<*4Il2i@9di;>t5 z+H*7|4a3vkFF zG`l%)lKQ!LjF=?6)h5>{#AKOVQK8&VtO?iYGuN2sAUBU?nAB|J$6$Z$aJ^x4|ACNT zjuJ61P;%}1$nXy)K0^d%z>mgB3W~X*y436~+Ajx;3<7ztxH2TcI&Q>7A6;gntAuND zMqS%o*;#6wbU!a(zM1SaMLM+0{M>QU!vO_k2i)ME(n2R*mn!!YkM%^=?vzCm(~Rs} zR^eKX-S8TrUnwKjRe0sU-A}sSkfm&DWzAziMFc+Mp_dn8XXNLqF^aCe3rPyh@#ZkV z{|=zKRL)NtLWO&ohiLO@k=}bQTLRASn`HmcA%z}N@AjbShT=~n>V0-zw{MD5M6>Ya zK9a+4WTEEE)uOEc~8}3;b%^@;qpuYE}S*X{#r!4d@T`{Aq5`NWNRJWhgPSQ8^tl_Esmi^ zb49+cZpuqcPS4)xBZdle_(6Mu6Gb!`D}VbhyDqjdZnCJtv$w_9^wMPTEa<_^pZ>(f zSXu~r#%AvFO#gpmef3{dQTH{{C85C34FXC^4kbvJgp_n6jnsg2BPAs%;84;fFu))& z;*in|?ZD7Ebi@0>=XpNgAKt&8|8ZE~3Pvf;?U{IF+hW=~&2Cl#_nssEq=no&!t!M2Btwx6FIC`+{gB#U=<7~WY(8vH1DS^T26 zA{7J;I2kQsP#61-vzGRE1o8Kp%)a5|kjnVsH~Ssk_S{*ChDxcvu={NzsaO*JFK|-t zVustkPPULe2z7Yb(LsE-_i;svh}%P{eVak?x?Qo?C#n;HAc&(-Nf5*cfVy$R zKU#rwI=L5$xuWy8f-s*;k9QjmQa;4-RH6dY{Ef|TjG-8><6prlQ^^&npuyK5Nhpi; zH~F;3(!1t<79w)}PGdQ#g~bvTDBgCF7Q9?w?#qj>PmFn7P*UdVIW?5k{xn;8tk}|8 zOr)4l{(|{RM<hiXz)m1=3B=QyTlb8%UfjFDae zEUZuZCDd%CI@u4Y?GY+YNA|*KFp-N_lz%R!GS`KIJ03AKHNRXd3p-R;8sovR&P6tH zV1=&RLEdyVhTIadFzRA69W=1aAXD7WmRAlx93`*~P$q`pO32{q!hF5A%B=Sg4}-VRJTQik0wo0cHyW317?B}Vk>LcVvU5s14i*O zn4$E=`Y*prDc}7H(?rDbF8plIq%_-;n{$=*Bs8)!>C$Wd)J;Tg{l3{Y+cwFzXbPEuNbB{ycz!gR&PLOmh`XgE17^*> z2+cp1DZ|2F$J2|#E4jm2ItI1n82Lj(P{Bp}_6E$SF zBjg8FdX-dwc2NurDW)H4YDTOS^wQR1V_64tP+_U^3G7{tn1~I5r35mlDDErMK@74d zQCl#@Y#~MzNN&tyEG7=KIRc4=MZASdT^le>PQ8L45FC{IS$EpjA{SM(*%y-=hg7mK zI&I1~|9rRTW!6}StP*mZ13uXe*9(YA)HwK?5r)=n(Rxz8jm*oV@DB#g#n3$)R1Z`9 zl%W3Qxv*?+*zDA3wkq^^kQ?9J){n{U!z<|XSG%GO(2O5J&|v(foX%qq<=V1bKmE&! zjf!M39zEZj;SlS3?Yd|VKAcxB{TNx8(TvvPNgMgZe<<@_TG82DcyQat9YE|`1O8^2 zeO4E?zK|g*$dLd-2kgLP`hI!J1uM#d#>Sdle%7 zCOsMPJ4LqH7Go5uMMUlUo?{P!5Drkd_NZNWa(O)%Mk+QK9Uln^t^M-+0+gmfZtaWE z9C}e(91HkA=1n7E9c3lje%vY^L2CDnFOGhmOMVo_zHR!dyw3IC%~Trd*)$%(j-F;aCNF;#A9xSZFUD>6F4{EU_BJ)g4=4M-rPowo;y_FhC0mn1Tu-<|( z?+VKA?_O`QVejASvqUP8Nk|kTKc+SDZ5#@SY;Vy5g592=csZ_f~#fmh!6*!p5eH0h?E1FMdIP@T!0C9E&#Y|`A}jEjjcf-$oA zbvlx_ZH@3@RMS>gyM+gF%Fe>AwdzAguS!sWU5k)eTJGK*%sExT%nbV*65D}ZzJ^mMcm+F(PCEKvV2Jr2`${s<#}Kt9r=5a~)P+S7;rCQLv3 z0U=q{OnYfFe`%>c(F7LZXIsw74!rQF{X1KU7OeIn4!G!#e{+zSE$xr=Go1qjo=!?2(v*ANv87t_Xo%|14uRl7#LzhyA*A>_h7w7 z+};LB6CNZh(=NL9J%xCJ5sbSt`6M;QH6D9K#SG_J4h88o4=A2^6<7VBy?*bb;Yv5t z+du=|F0t*=!qarI7IH(|?;yr#VsiK=R8>-RO_0RC9};{a{9jYL!LcAi6?3tn(Oj zJyj+>p!kd`#ax95KK6Mxjxcm)6J<9cBHJA;q-F10GKOJq^W2f|l)oVI+9M4-^7fmcL)7dTZ^33ns($049eY%j0rUL!Z+zg5zvXftI2U*)%k>^{&$Pm%NT=t3RbyQ9 zZ{US%!J1hR^1@W(iK>N##fsbT62a28X}>emfr=K*lGnsXMnQn`lfnca3081lgZ+J- z-Rc|q8SiRH*VD4xF6cPf0~axv$2=+?2)X^6hJXlgn%vlLjNPr<*;EOr<7B=twC`0J zFN6o=s-;kVc?tOPt~wpWSQ|pKgyBAzqcgsc2`h6Gec{<;teD;>(W{Z|#|&nq#E@_` zE*HqHp#(@HD9$IjnD(`ayVX_97k<*E{|OOh0s&P&m{y28?a$=1Z`Lm;p=J#t+xo3P4C}CtkqQ}W za&%Nt@$Fg14G+;Lt;$bqbd{hXPk;DRY_pchTQ@(k8)x)^b>w4iKGh&71(fl@kEmt+ zA>urNZi1XmXetxaZQXZO$${QVi8u9v7*Blm^X+}YeH@wG@}l)DDqgK@_?;`s*zLhM zB4?Bz7Kq3>*Cp)fhQ~8oP?NT77H|QBf`a0(4_FRAZ<}r@+12>|lb2>wXO!?C*z*VI zOiL|fbwo=f)YviBeSak$>C+O`cZqKMOto2vClv+UT>fyzU2!dl$sGGmIj94mAY%4f z^`#I-?tJR=ivb)%=6I^F4w0XiLSG!HkI)A)P%1Mm zQdD-eC8wSVV|r~)(~G*=`t*;Cf0?V9vt6EP1xSfblu_lS0_w@}?)fCxs;YD{L( zFlTpVZcRCI`qAeHej+l}*K9d#Bm@R~CDqUZA@O*u;O}DA6ig<6gy*c2g;W%{+pq?F z7uI?{Lo$}udXJ+BkLxvp6*eWR;LI+@${G(=Ay7J|!U$ZDyp7V#_{GtXNMJJU(z zi?E;Sf7mJFT5b$Z_yWBunLcem-a|OI7Uq_C7y4Klli5nj1_feOmx7Zf#{R5DJQiBm zG+^TN)d8RT7uA!pME?4gu~yM{K6{$z!E{ih+`fX7Y*2EBL^v%&W>aQvb9giS-`#dh z?*Dw&#DCA!a6J{0GI!PVN@ZTFT$qiZ5P6y|_4_GHMT-kQBS86yr4GRkC|+@md$8?z zPK7-D-;p$n5Y?A#<;>Ox@f-`}eq}}%sb8XF2k<6hK3>|_4|X&mm7hui;FILmbZskK z3E%_GFRy>hMnB{2Qs-&rJ(pGdvj9^LPkn&h@C8Fgv39fwQdfQN2{|zAO0)R+O`G`7zs8K?>iY*+Zdvgg&GS`|c_H z-+o5#X!=LV%M{N&1A2#Jzh8M0)pGtr1AeQ*u@819SOMnvj49uUkC%0SHI?Gak){#{ z?%Q|8K7{0{Gc6C$;4+*8@cGc}hN-0ah^{{R=e|!o;vo~OsE8SA%xg|HG;Z7}M7h4j zIHVZNna8|mRg(zum*86SX82E*Wa?&4C3;TYo%`|mN1267MHW{NiA}lGh=#j>+6WkN zKyh5{mr6>u!;8_z>H88G_ch3*{#x5wms5vIn!KT1q z4vK6m>IKLP|4EYiqM&OZ#;!2%=}wg+zvJ05Si>LqyOivpfC_@>L?dEy)BmY1Y(xcY z|D#QizFsvajbxWg_F)S>^B9DEM_Fpw4Rcb*{Xol3!>L>GaokmxsFHQUGijEn6^4Zs zTjr%Cm!3#^a6hCq7;C%0=Q)PWOm=Aw`DB-8vmQ)t^nXQu1?W^f4N&!h`+oUxg%`oN zh00kQs5(&*DkZV;L)>I3P^i7%{BiQ>in@sLGQe4P#R%+H{wKpN7H-!8dp(5y{fJ2I zZRxJ?U`_|D1S7Uq6T$qQ*?UBak*|i?dU<56R8n>*X^#SW7gh*wV9_;Y(sLlBJVW@(oou;`?s`=7O8j&kYGeBY3dzkh-!Jhm%X{+;-EEwUC$W^4A4HQVQQv0Rc- zVq`be*@L+>5#D}=7apiO2nGH^^7?roq-F%ik0$*kxHzbHV<=%GD@>kFxwSRc`Ag+L zmj%}LcGeg?B7uWCy6BIF(^cit7d}ggRc+JHDWH$cuR$?hj;2xHmq0~>S;mVk%0vmwaYpO=}cN zEVEQs@A*@kHY+_pqF&MOuigOS?za^MRQLRl)!O5=lpX7{!>ucNr58MWJ{wJxyq2cC zt_aJqW~JG0*Y z6txabZUHRj>_q21nr<0#ETnhf@U*C09NdBli(v__|slYHi93ap3={k zcq-iH57ysJh`5BK8Kd`Xkg7`ANAd_QMtK!}E7gxzkhh+b3-v)f-2ntlwJjXOpT?J; zTH|C*w4Z(K&zW=U81pdHM(;2C7#|yv%s%l7E_smC3qfb{0Iew3cNDH9Hj{l!bXd%M zB4#gpU#Kz3cD8T8Zl~aK*+OE&kz`LsD^~h`BZYYGPJ)62<wzqT@(z)8cl!PIB!4JI%hYkwdMc9G__(TDa z-D*>plx0N>TQ8HUM>L_C`4SgEAq?3}m+q#ds=c@mX#dw$E625}+DkLUKa<>kLS$X$ z+#j<>e$EG1f_ip^LBq`*)5D6YiPa3rFQIDaX|d3JT_uDmKBOD78 zFkJS|7?AqMiruY9^6YxfEBdqWgWUVKK8%r{y+lqu5c=5Zd1s2o_o*lPE4t|YG9Jd4 zLg_(Y43pVkJ@*HRn=WiBh{S|C7Cx90M7Q9}h4UBX$Qf@Y4g;}56I??2L>6~piWA(A zl>;sb+B|jy^@sz=Qt2}vd>c`5S68=-ff+Bd;O(Tsbp!UI?uc2lSKZFqU!UtMHjI3j z8@TvxOQJ>@;%~fq`xh_K!Suu(tiF5n?gC*ny}-zDf&q((fZ2gDnf0iYrqXONR+5s9 zOy_dz37Ga}&1UK3z#Gdsa><@VaMqMv!3_tYO*s{y!Xhe};zp*OjZt~{3O-t6TxETm zQ>>+$wXB(40U8)B1hRY(XESxvEpDBYU;RA2D>e7m3UNAIqyFf#mJkM)n4)UK+49}2 z*P)OnzAel5)9$9i8`-Md59Gk+G+Tj9Id9eL#xjLc-l|y7l&IMB#Khz23EQ$&zigHF z7u@x6b62O6bnmBp)hVFmy2tZyNhvONT%AS#kq?aSFWmk<9(WfLB+_@)s`VD**Y6Zr z9hy*gnWmP@NIbw=DOvkNBd7=FqiSEdYT*rmCt_Bk5y;?(RNvS|?z1jtf=xQ=)VtS= ze-&JuOmTdf)Lc=e#r@4vV5DY7>c%mM=6$kadY2qU(`L$~aA=<*Ct2B?dzBtK2pfAuDbVBC5-1+W|mu8LGYhatZ3T{}kS0&|YtRJN;M{1IPX8RO|TT(}yd|cE*C#>)B?upH*H-GC~rJ zU7PsmGuOyr*4%Sq>aYXxdgkIMd3rTGW# z<-{OH?Adb89fWJ-a9V2=qL!J{a=grmGs|!j!d%SnBdwMX(fAkfjg9|))auSnkiECR z*r}d=M%T4bQ~4>?+vR}nzB0>WnR`FJibUsJNLx zm^wHoYLx~^_KY+qn~cI# zQUIN)0N&n#ycYt`rBj9Lcj@RebPM1Zk|bc(;iMz&$LP7=fH9dL$bu(CZ)K1juihgf18#2I zu6vm*;2&d-1@}cFOP#I40r$a#=JG1$%oow8Og(GCN4ND8g*~`(%Df+PpGU7?)?XJa z0UR7j0+6O%SHeqDJiNI&^$83*s{!;p*%lr|h zUj@BXso-yt?xB|Zd$*ybDHrN5xoPllEX#sePte{Oj(yqv-7?#e?7t# zZ(&UT1LqKl^NRU{LxG$0N3v{lZ!N7{bN?g)mS2W#hs(clx^;xVw*~6uJ$i~$hnFyS z|80dp4yh${zd5}iCcxf4pS!}*cjPwb^<>hQ$#(-)J>^#Q)&k1KE!RE&DF<34Q}PL< z5>oJ_W1F+_i)S3S5VWn;(tz%|>Qa{=#*3x4z`pbal_GvXmNzX1!P9of6XBf*oEnQHqm<;s<@WqbYI2@3*1Lq^jC2C* z$ldqp%myJHcKn7=)yC|g_7VdgeGWw~kcm!3rpU)Zbm7A*dtYieVl}yV>EUAZHjW(c zg>aVN+|Yx!%>&AfolAnh1lw*5aSS}8zMNQi^(*f+A?cI5g@@6W&BA6M&-yz`O^%87 z3$P-|LdG7T}p^Li95U0mEeOY#VR?i}+IN+$ZeZ9WQ7XNwz{b zhZ}x}_x{pDc^-#Q8SH7P^T>Hf7U>2u~D#Lm@sl87uZDm{0v$?S97QbY0)v-ajTk zb#9L7m;U&leN4h7-^ta~2eY_OLhpJU_E1xrpFC{-dJ8n-J#-B6gF7BPbwEBpkiFoo zaO7=TV>c_)@2}T9HszwPc`SdB(qS=+3Y$Hbhx?`yyW|&0Hk~`*O2=wGcwo(5d8Bmo z77;CGywSpaT=q`HRB8_8#8BG^jhVvx!D*nqec-~bL-mkv%_r#wF&_MLj%xrwXLgso zs}fqXxvWAJ$=5V%u3Z{%i8_{c+jPeXQ``v6UH<4)hsKK7Z``e^5BDC>5h zV&o|iu5_%D1IYxR*B-Vs-{$07Q5n-+|2p?qREXZ&M^!3T)?%7WZnPIUYrK!Y8uT18 z{UQYBb>}Mjw%m=7ji>(qh~L$g)jswMOCxBHT5g@u`YcADqV{xr;_x4>&szujzIbe@ zWF0Y%t}RBWzj2y0jJch%PF}V)7{9)hI@=#Nm^;xv#TF?1?wsKE-jV96*Z>&ijc|zxgqRdW2xG_nRU(op{mE9vUvj zh(5eik+QXXHNZ7EGzT}qt}BcpFo!C2&*xj1{|TuV4uZ^BzD9@7`_1!TTwLKHdOFv2 z|LsHZy}43bj2vlrVc8#g`^AaZVmSjnG4Z#de~@##Fq}H_EfMW&kH6Qh*QeBv0cLd! z^f}@z$)fw}uJGCvnv&PbCDYE`A0377&ZnKk7^i*t)s(c+zl(VC3C%+j(c_;!i<-te znx0Z@9R6mljd}{EVhA&N+^+nTM3w7g6!a@PMb@*fWGg3rcu*xkU{kJvUat&}W48CJP9m)l26*}M&$n`eoMY~siJj!4rBQe!NFSj`0k-xb3XE7f9{ zl5abj-f=hX@)aTzmG!0UZL`9~NPwT{rVpul;Jx3_ipA`5uge97tj<;AuAs?G^4hIH&lzH;`N3!;Z;oWeDf@tI( z9eu`~&V~Q&Y-|QDXNiF>K)X6d2i6S=2P9S)RPdXo6MsV{%K6m%c$;0RKQ-|Q)OYb6 zBpDBRx-Ih+Z_I9(0_t0M+XJlls-KoGO5Gpvgt?H`9Rd|L7?EarZTW-S6Ks^B^@?O&+W z>D-l3|6~<@EoV4W)gIdRdK>$7OFV(D{I8wyK-D*7BI*B)CCO7GZVIhu z8K2?SVa1L2%x7?q*J!sow-E$ttn2gb=wh%Bcny_0v%mS=f0_AaclSc==-X5la1S=c zituCNTVkpTvoL&7-3)-9^U}~v629C_u|F0%P|KA>kCtk_U(Ig*o2Ja&7#%JqlR3HU z`u<=h_8}l$9wen;&sk(|sD%G8Ni5j7|pVn~@z2(xuX3!Ao~ahGj1N)nRW`U8VmDRgd>&`@RHa zGEVzi%vJ?Et9}R%Z+Yr;l#~uVJsjAqOGoHJmm|ldQeS{T@jPqYQ;t+W^tjSaHS%oPDPXvtA{Bc)+H}8KkCYf_o}hr1+`&G8J}5O))u=7gyh44?3sQ9*$ad!N zmnQvNLxAJ{EM1D}jWBy^6H-L^3H`R87YQ2`;vfo|q#_ao{U}V@uIzm^UKVDtaT)#U z7p6O*c^*?p$ZU1*;(tXe4NBJ@WdpMbL_I;otfOb1a&s~9=U89LEX>`QptlH+bnS zQ?27A1E#|!O#JJI13~@thz$YjZpF9$)+b1W_Vi6kgz=8Bqu8#w*t7S56A#|hMIMaQ zjlKf$nHlfL8=B;efXIvRW<@EHwH8vqjqehd8>t%thG;f z*EYv?R%7JS|-vGs@o`t>*o7|g{eRH2||QP8(v zW2;8KE?|8a#9a(VO{N!w1Hh+iUe%p=J#XSo5D|==ZEwY0I9IpeyFexvr?zNZy8yk5 zCHL9-OtMS?I8Ky)BKsp5)34n=y)n+Bs|h_*KRJxU2y1sFG$y+Pm#*$>yTC0n`Hp*} zsS**-!0j&)tFnBZ2)cSAE|6r|!-X#(#ii~{H){_uNo4oH!H*E=j^8{R>6K-+_9Uhw z-!qUgeYqLdAeM>4--XMofu5uOCyY~@_rYb?T8|(bmjnkw-WLWzX6R;Q__zqG{Dv)u zC%nAwGtc&U#glf1NG}jCBj`L?FvyElbXeKqQl=a1xEoTd{JwsjTDLaTrF31hI@esv zggPCkD_a#DaUD3D+Zwu->-rm)^KeV@Pg`az`t&y7sDU-9xM>POI4T|(WWRjcyzUkq z3neyN&$lGXuJ0>pt;9oB!l^B9H?p~GEDr1@X#iCVB@z#o2M#;3309P1~?*;&3ss^U>!dv1Mv2zZ<)K0 ziXHlCiJM?$s^2e6+g(R6W4T4(V-g7qmwmN$6qvGNN7^lpM9?qG8;DsNX&(sUyq!DO zJcjO1l>6xdaWbp&Gs4KPvHirxBpu(&PZjtbZsrfaW;@Z6L!Sw}cS|axf&<>Qo9zIjc(O=Uw_wkuZ;^)%nQGW#5nO0uX{P zh6OC_U%Oig%&aX=dn=jZm^rLuu#u7yXWU)gz3Dv6w8p?)+AmBxckTc7=rn{dc3TWM2r|BI=MXkhT^+eN9V;n&ydjWTsLV)RQPT+t+1HD zqd!RQLvL(z2W`Ta_k8ONOBUsIlFy?pk$YN-A80{V8n+&`XX14Hq_ow#@Tm_u#Feu% z@8crAnpL^&Y$nhwF4K*4)!XO(JDO5261ME*c*ZS4I8GFcAskXjcMhzD1=(}r=Ybe5 zE>epLN7@nm!oeX%G3v9rw2~~n-vnokjnVDm4w$|m1i#vNUL2cpc4hwad%KRKJ*Id$ zYEZjg3caN0i!@?rb=2#9R8swlb}BG`U?fb_loaWb4JK%9tw*rpdU3d#Q#I^pt&eJ@3}I&0jU*LisG zyO-&Siq;PjK&_l=f#_9$@f!xWahq+h55y5N!}E#_VgmrM0A$msJ+ATM&ENA0iTBFU z08hcY2JY&vuvD{8_PAwFD^aH~w_-QM)62rm){uGw|0W(>YvkTi-l{N~iYS=(pl9D) zhR)9iQyF57#lL=N_T{ZGoo}b1bL|-yk;oKhmm>4Fb{PCBFTC2{V_PsWGy4188 z9ZekN(gDl{w1K(-l#8>cQsuh=O`S6p&^G318|0p@-E?`ngS5*$9jLs5DM{odx;eV7 z1Y%R=ai%~P>+>nM{kPTm?Zg4jXRWMp??kK2hRJ&A_f`yiNgsD;0TlZyeCJyto%4#x zDc!$iYteHz$Zs8Nn8&5_ipj;xvBzDLv&hx=~4kSqN$~E~I-l$kf?(!*P-w z;b*}GCtYs*ZZmsLuJ*MrkA8rXfl{SW676~+NU@)~a_6-~HIgPGKMY#PahJ?NN8i*K z?D|V|in=6CIDQYViV>sKZ2x+q%OM z?yIL2U}^8}={;U!^9R400o#1?7B~^|opr?04&H>i_&|@lWG;Rbc6HF6s>g#i&__H*oxjybRd!sGqSP>`(X` zQhy5OtHCph$YmOPTw$uJu_&J@#mF z3byLD{i9-wt3~fbuF9U!olZ>%3E&Z+o9b@?=hU(<>;7q?59BiXX$XW-VMfHiM}a!< zQF{lZb)L@pNr=?gZ}%O>w{oBhjS_*o?U<;Q&1BcgG1sWD7C*}V_sFPvtMZC?>uSl4 zQ!i@Qyxuq>(gb{3di);P_T7jKc3wempp>rwEOgN7Jo#XAu5FWi%JC64;3p@J`RJH; zBA0uQryOv{;}Dqg;71l&=KZcCpJisnMnWePERaTndWH_1X+-95xwx%O`QD5=Yg{n+ zD`AHLSXw|;;9%(%v9qIO*Xj{hJS_JEZTNNm>SSN6# zoxzxP2q$9s%h`_WAyB;0!f*Z$_t*L7-HGiG3cH<=pxrB~WkJYx^0|SEzjx zKWLR?qQXrYF}z1?eOe{Mau-@>FAMW4q*(AhS9tEdL4;MSx_G&Qj0y&pRthEMM!{Rb z%AOu!wsV38PZa^u9#-$YkdJpjD5rCDYqqzXv)ZtyQ48ZAs~`0?k{oy=VZluAZ5j4; zE+h_zy%PT>A1wPs_!Y;EuM-nrxAgS=>bA+R{Hf#AerK|a&qj8gjG(WY>`IC^Qn48@Zxu76DII$Bgo+|$M1p! zSnfaiah2q5$_^NBL8i=gC|Bn(#pJ_Czc*Lk#`>6^0$u@K+e+j280O3UMpm-W-gRCV z@q=43cs;-cfz@qlfHx}t(g!j;Szthj#m5NeE|VJ3<8;c@qGIDA%=PnS{ zathn0W3c%u=wdjcFh*3eC3w99q8mnucs?rD8TKqHb#7DG5U~H|Pvf&c)3q#Uyco|o z1~eV&of6^e`vNo#yvuYKzBhsz{A~-lpv`KD!&KlduNW@)w9~h+R6_{4hZ&POeF_tM zlmc98Sp7V=tjV!iHubGOcqZrv2_Sc{8q2 z3hZz-#&~bwweWo_r>0Yxi|8Rk0Rp7KK9HI2M9Ha9BDx)qGB{&F%=Oyd^j|LvQ@~yi z*-t|oQsM!;H#nwED9MeA8P5avyieN7)S$G8hdpT57s{`Ee%sQ#x3sJjdNtj8!AbWm zj(m#%==>XJDXmqCZnSk%C488n-n=M9wv;zixKcu^af_DEt#J~X0L(lAD^t7pBoPr} z)oj7jM>OK4P8HBWlxCZWJ=Ug`iWZCLbK;%IdW@bf_3YJtXxl=zp4jvO&m2?jew0Rmz7npzYzoB^wf6AMy zPiEmL&ChAee zi+nW!$5Gtzs3-cwFlX@0*5fTrZOCBd`azZwK$>j)vXMC?Uor@?DPh;|73u@Ig>~h! zzghp)?|@WfIEW?epbG--Pfpiei#jEbeLZBad6H`76vXi= zcnBr#6qD=fV=+mGt@u>w?ni_sq7U21Qn3!!yFdB8ZwHV{1h!&ugTy<-Mr^Pb4@?~w z90?l)26%a#ZMMIAjeU3-K_yMHf)B%ClN-aeV?esYuWaGGWuG#1^7q z`mo|S3q7E?k_2EAF2L7!0yI4-=-ObahAHCB8QgO4@!H#n`aiq*Y_axYNeZU=QvmHm zueX6%{={}n53uFOU0VH?bS~Y`-85*TAJ(#GGYs;C7k<3yauVMC8T`k*){9z`Y@g?s z4^*+Q{?N#5PN0$s5CtN+U1?Z^pV9_(X#U%S8fNe`3o`%f*h^Bt>H0EXO}`Js^C`~u z@@@R!a7Y0($_&({wbvTsTpmGgw;g~S&{UPzpX96A>7$3^*x_Nh_wY1oHA(GQWu8+$ zfCS*6_K3P@^wmPz;Q`T(2g-aDm<@Ae?R0Z#I;>&Da(BMCieV#gDS$anVB+W2=!k() z;pjY>Y;;^`?KzeksIfQxOqML=z4@L1gKG>!{)qj8s zHkmqiD%x61aTXrt92Intd4zjf=e0}fb zdlJ5(*2@I=1za$-MowWV=jhRm+2lM;YY>!v5zK_}bxLld@wVuEnJ`!87F-bA!)IJ% zQ*{vts%mX@gwQb6hmhF7faX}rcMs(=Fv-ro;dF#n&A=!oKIGcNR9pAqtUKymJoLbI zB!IF+Ee29dex$?ON(6^gjH?qw#g<@tdEAB?BoaG$_=O{8GV1a>G2S^$YY?cQ{ABaS z%e$@A_k}so@5D0!WQBC)BZ_C#8GO7A>i&U4rstG|0yZ};=`cOr@hDoneI$ANzN_GR zVGI6@aB{Fmo<4Eh z?=-{v+}6swCH`KiJ7W0LCXTkvuoh7~^E$gnztVGTUIbLR;#wi5llDr9BC2aV<(5g@ zKr1D5wHEkGE0^f0y%S7M`yRNDe$w>vlN8ZA2=nx^t|T?c$MZ-!+0S3If(Pv+J^nQ+ z1zVi<>i3{BQ-KwOyNQR~<-*-%x12FJx=D{ z`3~!~R@Fs?Uo~x#i>eX<7PMn_5U3AtwJeq;3VkmjmHC?bBN?PdG3tw!$f;tXowoyx z=59M6<>dZV={qhb0zlx*S{AkRmCWvTkf+&q0#l=CHUfd4urpM|u+m*tGsd_hKy0tn z+1T0qOEa4KYU1VD^fG7tW>{e)`cu@)$>rdmGgs%Axw1 z3z>Nq=9vbJ2B?$LMAIg{(zHf1)${{6hw|O}7zSMMz!R(Xlv{ie5ZTmu0g~NJlD@l( z6ZQQ>Q!yl{EnZc!u1fl`o+Q)T3OS`(tr3?t(p9OEM6Bv#^Rhs4;p;1bSR&|*>t(j~ zbK}ai#`lkYMdqNcib|Tr_$RtaA4 z$#F!?rNU;g6oaO&&4X?UbWU9J#D{{_f7(RbZ$zC$GePZiKWHD_98RQSD)pOz_gC+B?N5q< zloDK@q-C8+jtF3C?zs2fpk%7^n5SIZwudAGAiY@&*c|is_4jLd5cb0MYh3nRJ68>} z=sJ?jgs!eirftyQFZ8t3pZn$IB7LCM-}ZU=&?}fmeYkIAQD=KGm91~25PRF^n4_rBRt(Vebe$EBlcGuuI;~XE z!s18DL)!StX&5QWr*=)s-KP(~9KlO*$VAQ5mBsnEh+BcbaTXznPT+#?vV&AGUw#g; z5?L>UrV?Ab0kv=AGhpd{aX_$XD|b3cCkX&0F2NV8(c4vNq4;5UMg}Fl5^>@XdyY88!}7>G6&P{0|~5=b{X+BN9zwNAIi}&@tKAA%_8h9h%ga6C|Q$ z>PkOI0Dq5F3-&JpW^aHCzLtQ4x2u0St6+)~tlppO8Qgv@`-h^2c9O%#^wRM=NitF4 zefGrAt*o>>+$As}ID(^me|O8(d}^3pX#%NY<$_d%&kxGG;wMXjl}65@Iq*5YM^rn^ zJ;Wv-{&z8z&ZeI=eIVZ%+@|b48V4nyaJm5nfMia+x1hYQL`>51Mch7n13=ROLfj?q zx08De{pIyK*`{L)j%5=P37k$8)*gZ`4`txD{DXFW+;h)_;j^xIwzB##MAyT+a3AG`xlxSd%W`*9vL4>M+swz?OAL5K zDGvGgNo+A|&rWal2PBvT71L8AJmsojB~q41&F)|ZetCD}5017or0sK9A4HK++9~q3;RaHD_|fXu~CetZ8()VEtPa%z6)YLOxp*<^hh+ zqua3!d0r%V_DnJPyAl!e8#*eGrc+zA*{`@;nmqCK8cBty|JU2M|1;hH|5uI|3rm{Q z$dp5v6vmvQNh-=IXOcwDXCsFY<}}g4l~bW|D5r$6IW87Cv@mj5o8^!>OwQ-;ZR)zN z_vat@`g!&`J)if-{j{xB6;KbK^~FE(Fl#9TX_cltNM^f2q8__9nZ|t^3% zNt;I3l^&@egUO#R$Cwg((^)Z?T_)4z>V%U?1)#xNXc*#v=l83ymYikG&J2r@sPTj+ zK?76>YnC=t<{iGhnIpJgr)gk^=68ga+)i=zx6!EIxKHhKe)%Tn78q*60>H_Zbi8nA5#L_s-_g>d3_sxrz1yD_avj3>B#&rT0cz= z_F9@+HCN=iLZTM15B+%07Oq2em7DdX&H9dRI$WiHY=3?)9n{ON!*L=rEQ*IuX!a$~ z&;iD~I-q1uu=q6mhWG)VisM|6aygsbyTm^f~wIQQ8c{o(&C)|$JZpU``EL3KttGZ0&(estYcnUZ;()czp z_S119+)m6)%3Ykrr{PRSe+#$d#jP|ISEp00HSE!#!_%&MW$#K_0`Bf>qjN_@k%v>0 zCfYhuqFwc`xiyfCmftJS`c|F1wS{?kX>ARy9si<+o)+^3{aApWbzeCUlBm!7-cjwl zP!WIm7@zHC5QY;|lVL9Co7jMF$u8#|nAc)TmMsxWmsZo*C5RKp@M%0DZAB!eeIv3O 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 + + + + + + + + + + + diff --git a/src/assets/style/breakpoint.less b/src/assets/style/breakpoint.less new file mode 100644 index 0000000..584f21e --- /dev/null +++ b/src/assets/style/breakpoint.less @@ -0,0 +1,19 @@ +// ==============breakpoint============ + +// Extra small screen / phone +@screen-xs: 480px; + +// Small screen / tablet +@screen-sm: 576px; + +// Medium screen / desktop +@screen-md: 768px; + +// Large screen / wide desktop +@screen-lg: 992px; + +// Extra large screen / full hd +@screen-xl: 1200px; + +// Extra extra large screen / large desktop +@screen-xxl: 1600px; diff --git a/src/assets/style/custom.less b/src/assets/style/custom.less new file mode 100644 index 0000000..ddb1967 --- /dev/null +++ b/src/assets/style/custom.less @@ -0,0 +1,43 @@ +body { + --color-menu-dark-bg: #000c17; + --color-menu-dark-hover: #165dff; + + .arco-menu-dark { + .arco-menu-item, + .arco-menu-group-title, + .arco-menu-pop-header, + .arco-menu-inline-header { + color: #fff; + + * { + color: #fff; + } + } + + .arco-menu-inline-header.arco-menu-selected { + color: #fff; + + * { + color: #fff; + } + } + + .arco-menu-inline-header:hover { + color: #fff; + + * { + color: #fff; + } + } + + .arco-menu-item:hover { + color: #fff; + } + + .arco-menu-vertical { + .arco-menu-inline-header { + line-height: 46px; + } + } + } +} diff --git a/src/assets/style/global.less b/src/assets/style/global.less new file mode 100644 index 0000000..1eb9540 --- /dev/null +++ b/src/assets/style/global.less @@ -0,0 +1,91 @@ +@import './custom.less'; +* { + box-sizing: border-box; +} + +html, +body { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + font-size: 14px; + background-color: var(--color-bg-1); + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; +} + +.echarts-tooltip-diy { + background: linear-gradient(304.17deg, rgba(253, 254, 255, 0.6) -6.04%, rgba(244, 247, 252, 0.6) 85.2%) !important; + border: none !important; + backdrop-filter: blur(10px) !important; + /* Note: backdrop-filter has minimal browser support */ + + border-radius: 6px !important; + .content-panel { + display: flex; + justify-content: space-between; + padding: 0 9px; + background: rgba(255, 255, 255, 0.8); + width: 164px; + height: 32px; + line-height: 32px; + box-shadow: 6px 0px 20px rgba(34, 87, 188, 0.1); + border-radius: 4px; + margin-bottom: 4px; + } + .tooltip-title { + margin: 0 0 10px 0; + } + p { + margin: 0; + } + .tooltip-title, + .tooltip-value { + font-size: 13px; + line-height: 15px; + display: flex; + align-items: center; + text-align: right; + color: #1d2129; + font-weight: bold; + } + .tooltip-item-icon { + display: inline-block; + margin-right: 8px; + width: 10px; + height: 10px; + border-radius: 50%; + } +} + +.general-card { + border-radius: 4px; + border: none; + & > .arco-card-header { + height: auto; + padding: 20px; + border: none; + } + & > .arco-card-body { + padding: 0 20px 20px 20px; + } +} + +.split-line { + border-color: rgb(var(--gray-2)); +} + +.arco-table-cell { + .circle { + display: inline-block; + margin-right: 4px; + width: 6px; + height: 6px; + border-radius: 50%; + background-color: rgb(var(--blue-6)); + &.pass { + background-color: rgb(var(--green-6)); + } + } +} diff --git a/src/assets/world.json b/src/assets/world.json new file mode 100644 index 0000000..b3d9d55 --- /dev/null +++ b/src/assets/world.json @@ -0,0 +1,12822 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [61.210817, 35.650072], + [62.230651, 35.270664], + [62.984662, 35.404041], + [63.193538, 35.857166], + [63.982896, 36.007957], + [64.546479, 36.312073], + [64.746105, 37.111818], + [65.588948, 37.305217], + [65.745631, 37.661164], + [66.217385, 37.39379], + [66.518607, 37.362784], + [67.075782, 37.356144], + [67.83, 37.144994], + [68.135562, 37.023115], + [68.859446, 37.344336], + [69.196273, 37.151144], + [69.518785, 37.608997], + [70.116578, 37.588223], + [70.270574, 37.735165], + [70.376304, 38.138396], + [70.806821, 38.486282], + [71.348131, 38.258905], + [71.239404, 37.953265], + [71.541918, 37.905774], + [71.448693, 37.065645], + [71.844638, 36.738171], + [72.193041, 36.948288], + [72.63689, 37.047558], + [73.260056, 37.495257], + [73.948696, 37.421566], + [74.980002, 37.41999], + [75.158028, 37.133031], + [74.575893, 37.020841], + [74.067552, 36.836176], + [72.920025, 36.720007], + [71.846292, 36.509942], + [71.262348, 36.074388], + [71.498768, 35.650563], + [71.613076, 35.153203], + [71.115019, 34.733126], + [71.156773, 34.348911], + [70.881803, 33.988856], + [69.930543, 34.02012], + [70.323594, 33.358533], + [69.687147, 33.105499], + [69.262522, 32.501944], + [69.317764, 31.901412], + [68.926677, 31.620189], + [68.556932, 31.71331], + [67.792689, 31.58293], + [67.683394, 31.303154], + [66.938891, 31.304911], + [66.381458, 30.738899], + [66.346473, 29.887943], + [65.046862, 29.472181], + [64.350419, 29.560031], + [64.148002, 29.340819], + [63.550261, 29.468331], + [62.549857, 29.318572], + [60.874248, 29.829239], + [61.781222, 30.73585], + [61.699314, 31.379506], + [60.941945, 31.548075], + [60.863655, 32.18292], + [60.536078, 32.981269], + [60.9637, 33.528832], + [60.52843, 33.676446], + [60.803193, 34.404102], + [61.210817, 35.650072] + ] + ] + }, + "type": "Feature", + "id": "AFG", + "properties": { "name": "Afghanistan", "id": "AFG", "centroid": [69.11, 34.28] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [16.326528, -5.87747], + [16.57318, -6.622645], + [16.860191, -7.222298], + [17.089996, -7.545689], + [17.47297, -8.068551], + [18.134222, -7.987678], + [18.464176, -7.847014], + [19.016752, -7.988246], + [19.166613, -7.738184], + [19.417502, -7.155429], + [20.037723, -7.116361], + [20.091622, -6.94309], + [20.601823, -6.939318], + [20.514748, -7.299606], + [21.728111, -7.290872], + [21.746456, -7.920085], + [21.949131, -8.305901], + [21.801801, -8.908707], + [21.875182, -9.523708], + [22.208753, -9.894796], + [22.155268, -11.084801], + [22.402798, -10.993075], + [22.837345, -11.017622], + [23.456791, -10.867863], + [23.912215, -10.926826], + [24.017894, -11.237298], + [23.904154, -11.722282], + [24.079905, -12.191297], + [23.930922, -12.565848], + [24.016137, -12.911046], + [21.933886, -12.898437], + [21.887843, -16.08031], + [22.562478, -16.898451], + [23.215048, -17.523116], + [21.377176, -17.930636], + [18.956187, -17.789095], + [18.263309, -17.309951], + [14.209707, -17.353101], + [14.058501, -17.423381], + [13.462362, -16.971212], + [12.814081, -16.941343], + [12.215461, -17.111668], + [11.734199, -17.301889], + [11.640096, -16.673142], + [11.778537, -15.793816], + [12.123581, -14.878316], + [12.175619, -14.449144], + [12.500095, -13.5477], + [12.738479, -13.137906], + [13.312914, -12.48363], + [13.633721, -12.038645], + [13.738728, -11.297863], + [13.686379, -10.731076], + [13.387328, -10.373578], + [13.120988, -9.766897], + [12.87537, -9.166934], + [12.929061, -8.959091], + [13.236433, -8.562629], + [12.93304, -7.596539], + [12.728298, -6.927122], + [12.227347, -6.294448], + [12.322432, -6.100092], + [12.735171, -5.965682], + [13.024869, -5.984389], + [13.375597, -5.864241], + [16.326528, -5.87747] + ] + ], + [ + [ + [12.436688, -5.684304], + [12.182337, -5.789931], + [11.914963, -5.037987], + [12.318608, -4.60623], + [12.62076, -4.438023], + [12.995517, -4.781103], + [12.631612, -4.991271], + [12.468004, -5.248362], + [12.436688, -5.684304] + ] + ] + ] + }, + "type": "Feature", + "id": "AGO", + "properties": { "name": "Angola", "id": "AGO", "centroid": [13.15, -8.5] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [20.590247, 41.855404], + [20.463175, 41.515089], + [20.605182, 41.086226], + [21.02004, 40.842727], + [20.99999, 40.580004], + [20.674997, 40.435], + [20.615, 40.110007], + [20.150016, 39.624998], + [19.98, 39.694993], + [19.960002, 39.915006], + [19.406082, 40.250773], + [19.319059, 40.72723], + [19.40355, 41.409566], + [19.540027, 41.719986], + [19.371769, 41.877548], + [19.304486, 42.195745], + [19.738051, 42.688247], + [19.801613, 42.500093], + [20.0707, 42.58863], + [20.283755, 42.32026], + [20.52295, 42.21787], + [20.590247, 41.855404] + ] + ] + }, + "type": "Feature", + "id": "ALB", + "properties": { "name": "Albania", "id": "ALB", "centroid": [19.49, 41.18] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [51.579519, 24.245497], + [51.757441, 24.294073], + [51.794389, 24.019826], + [52.577081, 24.177439], + [53.404007, 24.151317], + [54.008001, 24.121758], + [54.693024, 24.797892], + [55.439025, 25.439145], + [56.070821, 26.055464], + [56.261042, 25.714606], + [56.396847, 24.924732], + [55.886233, 24.920831], + [55.804119, 24.269604], + [55.981214, 24.130543], + [55.528632, 23.933604], + [55.525841, 23.524869], + [55.234489, 23.110993], + [55.208341, 22.70833], + [55.006803, 22.496948], + [52.000733, 23.001154], + [51.617708, 24.014219], + [51.579519, 24.245497] + ] + ] + }, + "type": "Feature", + "id": "ARE", + "properties": { "name": "United Arab Emirates", "id": "ARE", "centroid": [55.18, 25.15] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-65.5, -55.2], + [-66.45, -55.25], + [-66.95992, -54.89681], + [-67.56244, -54.87001], + [-68.63335, -54.8695], + [-68.63401, -52.63637], + [-68.25, -53.1], + [-67.75, -53.85], + [-66.45, -54.45], + [-65.05, -54.7], + [-65.5, -55.2] + ] + ], + [ + [ + [-64.964892, -22.075862], + [-64.377021, -22.798091], + [-63.986838, -21.993644], + [-62.846468, -22.034985], + [-62.685057, -22.249029], + [-60.846565, -23.880713], + [-60.028966, -24.032796], + [-58.807128, -24.771459], + [-57.777217, -25.16234], + [-57.63366, -25.603657], + [-58.618174, -27.123719], + [-57.60976, -27.395899], + [-56.486702, -27.548499], + [-55.695846, -27.387837], + [-54.788795, -26.621786], + [-54.625291, -25.739255], + [-54.13005, -25.547639], + [-53.628349, -26.124865], + [-53.648735, -26.923473], + [-54.490725, -27.474757], + [-55.162286, -27.881915], + [-56.2909, -28.852761], + [-57.625133, -30.216295], + [-57.874937, -31.016556], + [-58.14244, -32.044504], + [-58.132648, -33.040567], + [-58.349611, -33.263189], + [-58.427074, -33.909454], + [-58.495442, -34.43149], + [-57.22583, -35.288027], + [-57.362359, -35.97739], + [-56.737487, -36.413126], + [-56.788285, -36.901572], + [-57.749157, -38.183871], + [-59.231857, -38.72022], + [-61.237445, -38.928425], + [-62.335957, -38.827707], + [-62.125763, -39.424105], + [-62.330531, -40.172586], + [-62.145994, -40.676897], + [-62.745803, -41.028761], + [-63.770495, -41.166789], + [-64.73209, -40.802677], + [-65.118035, -41.064315], + [-64.978561, -42.058001], + [-64.303408, -42.359016], + [-63.755948, -42.043687], + [-63.458059, -42.563138], + [-64.378804, -42.873558], + [-65.181804, -43.495381], + [-65.328823, -44.501366], + [-65.565269, -45.036786], + [-66.509966, -45.039628], + [-67.293794, -45.551896], + [-67.580546, -46.301773], + [-66.597066, -47.033925], + [-65.641027, -47.236135], + [-65.985088, -48.133289], + [-67.166179, -48.697337], + [-67.816088, -49.869669], + [-68.728745, -50.264218], + [-69.138539, -50.73251], + [-68.815561, -51.771104], + [-68.149995, -52.349983], + [-68.571545, -52.299444], + [-69.498362, -52.142761], + [-71.914804, -52.009022], + [-72.329404, -51.425956], + [-72.309974, -50.67701], + [-72.975747, -50.74145], + [-73.328051, -50.378785], + [-73.415436, -49.318436], + [-72.648247, -48.878618], + [-72.331161, -48.244238], + [-72.447355, -47.738533], + [-71.917258, -46.884838], + [-71.552009, -45.560733], + [-71.659316, -44.973689], + [-71.222779, -44.784243], + [-71.329801, -44.407522], + [-71.793623, -44.207172], + [-71.464056, -43.787611], + [-71.915424, -43.408565], + [-72.148898, -42.254888], + [-71.746804, -42.051386], + [-71.915734, -40.832339], + [-71.680761, -39.808164], + [-71.413517, -38.916022], + [-70.814664, -38.552995], + [-71.118625, -37.576827], + [-71.121881, -36.658124], + [-70.364769, -36.005089], + [-70.388049, -35.169688], + [-69.817309, -34.193571], + [-69.814777, -33.273886], + [-70.074399, -33.09121], + [-70.535069, -31.36501], + [-69.919008, -30.336339], + [-70.01355, -29.367923], + [-69.65613, -28.459141], + [-69.001235, -27.521214], + [-68.295542, -26.89934], + [-68.5948, -26.506909], + [-68.386001, -26.185016], + [-68.417653, -24.518555], + [-67.328443, -24.025303], + [-66.985234, -22.986349], + [-67.106674, -22.735925], + [-66.273339, -21.83231], + [-64.964892, -22.075862] + ] + ] + ] + }, + "type": "Feature", + "id": "ARG", + "properties": { "name": "Argentina", "id": "ARG", "centroid": [-60, -36.3] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [43.582746, 41.092143], + [44.97248, 41.248129], + [45.179496, 40.985354], + [45.560351, 40.81229], + [45.359175, 40.561504], + [45.891907, 40.218476], + [45.610012, 39.899994], + [46.034534, 39.628021], + [46.483499, 39.464155], + [46.50572, 38.770605], + [46.143623, 38.741201], + [45.735379, 39.319719], + [45.739978, 39.473999], + [45.298145, 39.471751], + [45.001987, 39.740004], + [44.79399, 39.713003], + [44.400009, 40.005], + [43.656436, 40.253564], + [43.752658, 40.740201], + [43.582746, 41.092143] + ] + ] + }, + "type": "Feature", + "id": "ARM", + "properties": { "name": "Armenia", "id": "ARM", "centroid": [44.31, 40.1] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [68.935, -48.625], + [69.58, -48.94], + [70.525, -49.065], + [70.56, -49.255], + [70.28, -49.71], + [68.745, -49.775], + [68.72, -49.2425], + [68.8675, -48.83], + [68.935, -48.625] + ] + ] + }, + "type": "Feature", + "id": "ATF", + "properties": { "name": "French Southern and Antarctic Lands", "id": "ATF", "centroid": null } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [145.397978, -40.792549], + [146.364121, -41.137695], + [146.908584, -41.000546], + [147.689259, -40.808258], + [148.289068, -40.875438], + [148.359865, -42.062445], + [148.017301, -42.407024], + [147.914052, -43.211522], + [147.564564, -42.937689], + [146.870343, -43.634597], + [146.663327, -43.580854], + [146.048378, -43.549745], + [145.43193, -42.693776], + [145.29509, -42.03361], + [144.718071, -41.162552], + [144.743755, -40.703975], + [145.397978, -40.792549] + ] + ], + [ + [ + [143.561811, -13.763656], + [143.922099, -14.548311], + [144.563714, -14.171176], + [144.894908, -14.594458], + [145.374724, -14.984976], + [145.271991, -15.428205], + [145.48526, -16.285672], + [145.637033, -16.784918], + [145.888904, -16.906926], + [146.160309, -17.761655], + [146.063674, -18.280073], + [146.387478, -18.958274], + [147.471082, -19.480723], + [148.177602, -19.955939], + [148.848414, -20.39121], + [148.717465, -20.633469], + [149.28942, -21.260511], + [149.678337, -22.342512], + [150.077382, -22.122784], + [150.482939, -22.556142], + [150.727265, -22.402405], + [150.899554, -23.462237], + [151.609175, -24.076256], + [152.07354, -24.457887], + [152.855197, -25.267501], + [153.136162, -26.071173], + [153.161949, -26.641319], + [153.092909, -27.2603], + [153.569469, -28.110067], + [153.512108, -28.995077], + [153.339095, -29.458202], + [153.069241, -30.35024], + [153.089602, -30.923642], + [152.891578, -31.640446], + [152.450002, -32.550003], + [151.709117, -33.041342], + [151.343972, -33.816023], + [151.010555, -34.31036], + [150.714139, -35.17346], + [150.32822, -35.671879], + [150.075212, -36.420206], + [149.946124, -37.109052], + [149.997284, -37.425261], + [149.423882, -37.772681], + [148.304622, -37.809061], + [147.381733, -38.219217], + [146.922123, -38.606532], + [146.317922, -39.035757], + [145.489652, -38.593768], + [144.876976, -38.417448], + [145.032212, -37.896188], + [144.485682, -38.085324], + [143.609974, -38.809465], + [142.745427, -38.538268], + [142.17833, -38.380034], + [141.606582, -38.308514], + [140.638579, -38.019333], + [139.992158, -37.402936], + [139.806588, -36.643603], + [139.574148, -36.138362], + [139.082808, -35.732754], + [138.120748, -35.612296], + [138.449462, -35.127261], + [138.207564, -34.384723], + [137.71917, -35.076825], + [136.829406, -35.260535], + [137.352371, -34.707339], + [137.503886, -34.130268], + [137.890116, -33.640479], + [137.810328, -32.900007], + [136.996837, -33.752771], + [136.372069, -34.094766], + [135.989043, -34.890118], + [135.208213, -34.47867], + [135.239218, -33.947953], + [134.613417, -33.222778], + [134.085904, -32.848072], + [134.273903, -32.617234], + [132.990777, -32.011224], + [132.288081, -31.982647], + [131.326331, -31.495803], + [129.535794, -31.590423], + [128.240938, -31.948489], + [127.102867, -32.282267], + [126.148714, -32.215966], + [125.088623, -32.728751], + [124.221648, -32.959487], + [124.028947, -33.483847], + [123.659667, -33.890179], + [122.811036, -33.914467], + [122.183064, -34.003402], + [121.299191, -33.821036], + [120.580268, -33.930177], + [119.893695, -33.976065], + [119.298899, -34.509366], + [119.007341, -34.464149], + [118.505718, -34.746819], + [118.024972, -35.064733], + [117.295507, -35.025459], + [116.625109, -35.025097], + [115.564347, -34.386428], + [115.026809, -34.196517], + [115.048616, -33.623425], + [115.545123, -33.487258], + [115.714674, -33.259572], + [115.679379, -32.900369], + [115.801645, -32.205062], + [115.689611, -31.612437], + [115.160909, -30.601594], + [114.997043, -30.030725], + [115.040038, -29.461095], + [114.641974, -28.810231], + [114.616498, -28.516399], + [114.173579, -28.118077], + [114.048884, -27.334765], + [113.477498, -26.543134], + [113.338953, -26.116545], + [113.778358, -26.549025], + [113.440962, -25.621278], + [113.936901, -25.911235], + [114.232852, -26.298446], + [114.216161, -25.786281], + [113.721255, -24.998939], + [113.625344, -24.683971], + [113.393523, -24.384764], + [113.502044, -23.80635], + [113.706993, -23.560215], + [113.843418, -23.059987], + [113.736552, -22.475475], + [114.149756, -21.755881], + [114.225307, -22.517488], + [114.647762, -21.82952], + [115.460167, -21.495173], + [115.947373, -21.068688], + [116.711615, -20.701682], + [117.166316, -20.623599], + [117.441545, -20.746899], + [118.229559, -20.374208], + [118.836085, -20.263311], + [118.987807, -20.044203], + [119.252494, -19.952942], + [119.805225, -19.976506], + [120.85622, -19.683708], + [121.399856, -19.239756], + [121.655138, -18.705318], + [122.241665, -18.197649], + [122.286624, -17.798603], + [122.312772, -17.254967], + [123.012574, -16.4052], + [123.433789, -17.268558], + [123.859345, -17.069035], + [123.503242, -16.596506], + [123.817073, -16.111316], + [124.258287, -16.327944], + [124.379726, -15.56706], + [124.926153, -15.0751], + [125.167275, -14.680396], + [125.670087, -14.51007], + [125.685796, -14.230656], + [126.125149, -14.347341], + [126.142823, -14.095987], + [126.582589, -13.952791], + [127.065867, -13.817968], + [127.804633, -14.276906], + [128.35969, -14.86917], + [128.985543, -14.875991], + [129.621473, -14.969784], + [129.4096, -14.42067], + [129.888641, -13.618703], + [130.339466, -13.357376], + [130.183506, -13.10752], + [130.617795, -12.536392], + [131.223495, -12.183649], + [131.735091, -12.302453], + [132.575298, -12.114041], + [132.557212, -11.603012], + [131.824698, -11.273782], + [132.357224, -11.128519], + [133.019561, -11.376411], + [133.550846, -11.786515], + [134.393068, -12.042365], + [134.678632, -11.941183], + [135.298491, -12.248606], + [135.882693, -11.962267], + [136.258381, -12.049342], + [136.492475, -11.857209], + [136.95162, -12.351959], + [136.685125, -12.887223], + [136.305407, -13.29123], + [135.961758, -13.324509], + [136.077617, -13.724278], + [135.783836, -14.223989], + [135.428664, -14.715432], + [135.500184, -14.997741], + [136.295175, -15.550265], + [137.06536, -15.870762], + [137.580471, -16.215082], + [138.303217, -16.807604], + [138.585164, -16.806622], + [139.108543, -17.062679], + [139.260575, -17.371601], + [140.215245, -17.710805], + [140.875463, -17.369069], + [141.07111, -16.832047], + [141.274095, -16.38887], + [141.398222, -15.840532], + [141.702183, -15.044921], + [141.56338, -14.561333], + [141.63552, -14.270395], + [141.519869, -13.698078], + [141.65092, -12.944688], + [141.842691, -12.741548], + [141.68699, -12.407614], + [141.928629, -11.877466], + [142.118488, -11.328042], + [142.143706, -11.042737], + [142.51526, -10.668186], + [142.79731, -11.157355], + [142.866763, -11.784707], + [143.115947, -11.90563], + [143.158632, -12.325656], + [143.522124, -12.834358], + [143.597158, -13.400422], + [143.561811, -13.763656] + ] + ] + ] + }, + "type": "Feature", + "id": "AUS", + "properties": { "name": "Australia", "id": "AUS", "centroid": [149.08, -35.15] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [16.979667, 48.123497], + [16.903754, 47.714866], + [16.340584, 47.712902], + [16.534268, 47.496171], + [16.202298, 46.852386], + [16.011664, 46.683611], + [15.137092, 46.658703], + [14.632472, 46.431817], + [13.806475, 46.509306], + [12.376485, 46.767559], + [12.153088, 47.115393], + [11.164828, 46.941579], + [11.048556, 46.751359], + [10.442701, 46.893546], + [9.932448, 46.920728], + [9.47997, 47.10281], + [9.632932, 47.347601], + [9.594226, 47.525058], + [9.896068, 47.580197], + [10.402084, 47.302488], + [10.544504, 47.566399], + [11.426414, 47.523766], + [12.141357, 47.703083], + [12.62076, 47.672388], + [12.932627, 47.467646], + [13.025851, 47.637584], + [12.884103, 48.289146], + [13.243357, 48.416115], + [13.595946, 48.877172], + [14.338898, 48.555305], + [14.901447, 48.964402], + [15.253416, 49.039074], + [16.029647, 48.733899], + [16.499283, 48.785808], + [16.960288, 48.596982], + [16.879983, 48.470013], + [16.979667, 48.123497] + ] + ] + }, + "type": "Feature", + "id": "AUT", + "properties": { "name": "Austria", "id": "AUT", "centroid": [16.22, 48.12] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [45.001987, 39.740004], + [45.298145, 39.471751], + [45.739978, 39.473999], + [45.735379, 39.319719], + [46.143623, 38.741201], + [45.457722, 38.874139], + [44.952688, 39.335765], + [44.79399, 39.713003], + [45.001987, 39.740004] + ] + ], + [ + [ + [47.373315, 41.219732], + [47.815666, 41.151416], + [47.987283, 41.405819], + [48.584353, 41.80887], + [49.110264, 41.282287], + [49.618915, 40.572924], + [50.08483, 40.526157], + [50.392821, 40.256561], + [49.569202, 40.176101], + [49.395259, 39.399482], + [49.223228, 39.049219], + [48.856532, 38.815486], + [48.883249, 38.320245], + [48.634375, 38.270378], + [48.010744, 38.794015], + [48.355529, 39.288765], + [48.060095, 39.582235], + [47.685079, 39.508364], + [46.50572, 38.770605], + [46.483499, 39.464155], + [46.034534, 39.628021], + [45.610012, 39.899994], + [45.891907, 40.218476], + [45.359175, 40.561504], + [45.560351, 40.81229], + [45.179496, 40.985354], + [44.97248, 41.248129], + [45.217426, 41.411452], + [45.962601, 41.123873], + [46.501637, 41.064445], + [46.637908, 41.181673], + [46.145432, 41.722802], + [46.404951, 41.860675], + [46.686071, 41.827137], + [47.373315, 41.219732] + ] + ] + ] + }, + "type": "Feature", + "id": "AZE", + "properties": { "name": "Azerbaijan", "id": "AZE", "centroid": [49.56, 40.29] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [29.339998, -4.499983], + [29.276384, -3.293907], + [29.024926, -2.839258], + [29.632176, -2.917858], + [29.938359, -2.348487], + [30.469696, -2.413858], + [30.527677, -2.807632], + [30.743013, -3.034285], + [30.752263, -3.35933], + [30.50556, -3.568567], + [30.116333, -4.090138], + [29.753512, -4.452389], + [29.339998, -4.499983] + ] + ] + }, + "type": "Feature", + "id": "BDI", + "properties": { "name": "Burundi", "id": "BDI", "centroid": [29.18, -3.16] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [3.314971, 51.345781], + [4.047071, 51.267259], + [4.973991, 51.475024], + [5.606976, 51.037298], + [6.156658, 50.803721], + [6.043073, 50.128052], + [5.782417, 50.090328], + [5.674052, 49.529484], + [4.799222, 49.985373], + [4.286023, 49.907497], + [3.588184, 50.378992], + [3.123252, 50.780363], + [2.658422, 50.796848], + [2.513573, 51.148506], + [3.314971, 51.345781] + ] + ] + }, + "type": "Feature", + "id": "BEL", + "properties": { "name": "Belgium", "id": "BEL", "centroid": [4.21, 50.51] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [2.691702, 6.258817], + [1.865241, 6.142158], + [1.618951, 6.832038], + [1.664478, 9.12859], + [1.463043, 9.334624], + [1.425061, 9.825395], + [1.077795, 10.175607], + [0.772336, 10.470808], + [0.899563, 10.997339], + [1.24347, 11.110511], + [1.447178, 11.547719], + [1.935986, 11.64115], + [2.154474, 11.94015], + [2.490164, 12.233052], + [2.848643, 12.235636], + [3.61118, 11.660167], + [3.572216, 11.327939], + [3.797112, 10.734746], + [3.60007, 10.332186], + [3.705438, 10.06321], + [3.220352, 9.444153], + [2.912308, 9.137608], + [2.723793, 8.506845], + [2.749063, 7.870734], + [2.691702, 6.258817] + ] + ] + }, + "type": "Feature", + "id": "BEN", + "properties": { "name": "Benin", "id": "BEN", "centroid": [2.42, 6.23] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-2.827496, 9.642461], + [-3.511899, 9.900326], + [-3.980449, 9.862344], + [-4.330247, 9.610835], + [-4.779884, 9.821985], + [-4.954653, 10.152714], + [-5.404342, 10.370737], + [-5.470565, 10.95127], + [-5.197843, 11.375146], + [-5.220942, 11.713859], + [-4.427166, 12.542646], + [-4.280405, 13.228444], + [-4.006391, 13.472485], + [-3.522803, 13.337662], + [-3.103707, 13.541267], + [-2.967694, 13.79815], + [-2.191825, 14.246418], + [-2.001035, 14.559008], + [-1.066363, 14.973815], + [-0.515854, 15.116158], + [-0.266257, 14.924309], + [0.374892, 14.928908], + [0.295646, 14.444235], + [0.429928, 13.988733], + [0.993046, 13.33575], + [1.024103, 12.851826], + [2.177108, 12.625018], + [2.154474, 11.94015], + [1.935986, 11.64115], + [1.447178, 11.547719], + [1.24347, 11.110511], + [0.899563, 10.997339], + [0.023803, 11.018682], + [-0.438702, 11.098341], + [-0.761576, 10.93693], + [-1.203358, 11.009819], + [-2.940409, 10.96269], + [-2.963896, 10.395335], + [-2.827496, 9.642461] + ] + ] + }, + "type": "Feature", + "id": "BFA", + "properties": { "name": "Burkina Faso", "id": "BFA", "centroid": [-1.3, 12.15] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [92.672721, 22.041239], + [92.652257, 21.324048], + [92.303234, 21.475485], + [92.368554, 20.670883], + [92.082886, 21.192195], + [92.025215, 21.70157], + [91.834891, 22.182936], + [91.417087, 22.765019], + [90.496006, 22.805017], + [90.586957, 22.392794], + [90.272971, 21.836368], + [89.847467, 22.039146], + [89.70205, 21.857116], + [89.418863, 21.966179], + [89.031961, 22.055708], + [88.876312, 22.879146], + [88.52977, 23.631142], + [88.69994, 24.233715], + [88.084422, 24.501657], + [88.306373, 24.866079], + [88.931554, 25.238692], + [88.209789, 25.768066], + [88.563049, 26.446526], + [89.355094, 26.014407], + [89.832481, 25.965082], + [89.920693, 25.26975], + [90.872211, 25.132601], + [91.799596, 25.147432], + [92.376202, 24.976693], + [91.915093, 24.130414], + [91.46773, 24.072639], + [91.158963, 23.503527], + [91.706475, 22.985264], + [91.869928, 23.624346], + [92.146035, 23.627499], + [92.672721, 22.041239] + ] + ] + }, + "type": "Feature", + "id": "BGD", + "properties": { "name": "Bangladesh", "id": "BGD", "centroid": [90.23, 23.42] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [22.65715, 44.234923], + [22.944832, 43.823785], + [23.332302, 43.897011], + [24.100679, 43.741051], + [25.569272, 43.688445], + [26.065159, 43.943494], + [27.2424, 44.175986], + [27.970107, 43.812468], + [28.558081, 43.707462], + [28.039095, 43.293172], + [27.673898, 42.577892], + [27.99672, 42.007359], + [27.135739, 42.141485], + [26.117042, 41.826905], + [26.106138, 41.328899], + [25.197201, 41.234486], + [24.492645, 41.583896], + [23.692074, 41.309081], + [22.952377, 41.337994], + [22.881374, 41.999297], + [22.380526, 42.32026], + [22.545012, 42.461362], + [22.436595, 42.580321], + [22.604801, 42.898519], + [22.986019, 43.211161], + [22.500157, 43.642814], + [22.410446, 44.008063], + [22.65715, 44.234923] + ] + ] + }, + "type": "Feature", + "id": "BGR", + "properties": { "name": "Bulgaria", "id": "BGR", "centroid": [23.2, 42.45] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-77.53466, 23.75975], + [-77.78, 23.71], + [-78.03405, 24.28615], + [-78.40848, 24.57564], + [-78.19087, 25.2103], + [-77.89, 25.17], + [-77.54, 24.34], + [-77.53466, 23.75975] + ] + ], + [ + [ + [-77.82, 26.58], + [-78.91, 26.42], + [-78.98, 26.79], + [-78.51, 26.87], + [-77.85, 26.84], + [-77.82, 26.58] + ] + ], + [ + [ + [-77, 26.59], + [-77.17255, 25.87918], + [-77.35641, 26.00735], + [-77.34, 26.53], + [-77.78802, 26.92516], + [-77.79, 27.04], + [-77, 26.59] + ] + ] + ] + }, + "type": "Feature", + "id": "BHS", + "properties": { "name": "The Bahamas", "id": "BHS", "centroid": [-77.2, 25.05] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [19.005486, 44.860234], + [19.36803, 44.863], + [19.11761, 44.42307], + [19.59976, 44.03847], + [19.454, 43.5681], + [19.21852, 43.52384], + [19.03165, 43.43253], + [18.70648, 43.20011], + [18.56, 42.65], + [17.674922, 43.028563], + [17.297373, 43.446341], + [16.916156, 43.667722], + [16.456443, 44.04124], + [16.23966, 44.351143], + [15.750026, 44.818712], + [15.959367, 45.233777], + [16.318157, 45.004127], + [16.534939, 45.211608], + [17.002146, 45.233777], + [17.861783, 45.06774], + [18.553214, 45.08159], + [19.005486, 44.860234] + ] + ] + }, + "type": "Feature", + "id": "BIH", + "properties": { "name": "Bosnia and Herzegovina", "id": "BIH", "centroid": [18.25, 43.52] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [23.484128, 53.912498], + [24.450684, 53.905702], + [25.536354, 54.282423], + [25.768433, 54.846963], + [26.588279, 55.167176], + [26.494331, 55.615107], + [27.10246, 55.783314], + [28.176709, 56.16913], + [29.229513, 55.918344], + [29.371572, 55.670091], + [29.896294, 55.789463], + [30.873909, 55.550976], + [30.971836, 55.081548], + [30.757534, 54.811771], + [31.384472, 54.157056], + [31.791424, 53.974639], + [31.731273, 53.794029], + [32.405599, 53.618045], + [32.693643, 53.351421], + [32.304519, 53.132726], + [31.497644, 53.167427], + [31.305201, 53.073996], + [31.540018, 52.742052], + [31.785998, 52.101678], + [30.927549, 52.042353], + [30.619454, 51.822806], + [30.555117, 51.319503], + [30.157364, 51.416138], + [29.254938, 51.368234], + [28.992835, 51.602044], + [28.617613, 51.427714], + [28.241615, 51.572227], + [27.454066, 51.592303], + [26.337959, 51.832289], + [25.327788, 51.910656], + [24.553106, 51.888461], + [24.005078, 51.617444], + [23.527071, 51.578454], + [23.508002, 52.023647], + [23.199494, 52.486977], + [23.799199, 52.691099], + [23.804935, 53.089731], + [23.527536, 53.470122], + [23.484128, 53.912498] + ] + ] + }, + "type": "Feature", + "id": "BLR", + "properties": { "name": "Belarus", "id": "BLR", "centroid": [27.3, 53.52] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-89.14308, 17.808319], + [-89.150909, 17.955468], + [-89.029857, 18.001511], + [-88.848344, 17.883198], + [-88.490123, 18.486831], + [-88.300031, 18.499982], + [-88.296336, 18.353273], + [-88.106813, 18.348674], + [-88.123479, 18.076675], + [-88.285355, 17.644143], + [-88.197867, 17.489475], + [-88.302641, 17.131694], + [-88.239518, 17.036066], + [-88.355428, 16.530774], + [-88.551825, 16.265467], + [-88.732434, 16.233635], + [-88.930613, 15.887273], + [-89.229122, 15.886938], + [-89.150806, 17.015577], + [-89.14308, 17.808319] + ] + ] + }, + "type": "Feature", + "id": "BLZ", + "properties": { "name": "Belize", "id": "BLZ", "centroid": [-88.3, 17.18] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-64.7799734332998, 32.3072000581802], + [-64.7873319183061, 32.3039237143428], + [-64.7946942710173, 32.3032682700388], + [-64.8094297981283, 32.3098175728414], + [-64.8167896352437, 32.3058845718466], + [-64.8101968029642, 32.3022833180511], + [-64.7962291465484, 32.2934409732427], + [-64.7815086336978, 32.2868973114514], + [-64.7997025513437, 32.2796896417328], + [-64.8066707691087, 32.2747767569465], + [-64.8225587873683, 32.2669111289395], + [-64.8287548840306, 32.2669075473817], + [-64.8306732143498, 32.2583944840235], + [-64.8399924854972, 32.254782282336], + [-64.8566090462354, 32.2547740387514], + [-64.8682296789446, 32.2616393614322], + [-64.8628241459563, 32.2724481933959], + [-64.8748651338951, 32.2757120264753], + [-64.8717752856644, 32.2819371582026], + [-64.8671422127295, 32.2930760547989], + [-64.8559068764437, 32.2960321186471], + [-64.8597429072279, 32.3015842021933], + [-64.8439233486717, 32.3140553852543], + [-64.8350242329311, 32.3242161760006], + [-64.8338690593672, 32.3294587561557], + [-64.8520298651164, 32.3110911879954], + [-64.8635922932573, 32.3048469433363], + [-64.8686668994079, 32.30910745083], + [-64.8721354593415, 32.3041908606301], + [-64.8779667328485, 32.3038632800462], + [-64.8780046844321, 32.2907757831692], + [-64.8849776658292, 32.2819261366004], + [-64.8783230004629, 32.2613001418681], + [-64.863194968877, 32.2465799485801], + [-64.8519819555722, 32.2485519134663], + [-64.842311980074, 32.2492123317296], + [-64.8388242605209, 32.2475773472534], + [-64.8334002575532, 32.2462714714698], + [-64.8256389530584, 32.2472637398594], + [-64.8205697556026, 32.2531698880328], + [-64.8105087275579, 32.2561208974156], + [-64.7900177727338, 32.2659446936992], + [-64.7745415970416, 32.2718413023427], + [-64.7644742436426, 32.2855931353214], + [-64.7551803442276, 32.2908326702531], + [-64.7423982971436, 32.2996734994024], + [-64.7206991797682, 32.3137542201258], + [-64.7117851247134, 32.3176823360806], + [-64.6962778813133, 32.3275029115532], + [-64.6768921127452, 32.3324095397555], + [-64.6567136927777, 32.3451776458469], + [-64.6532168823499, 32.3494356627941], + [-64.6605720384429, 32.3589423487763], + [-64.65125819471, 32.3615600906466], + [-64.6462011670816, 32.36975169749], + [-64.6613227512832, 32.3763135008721], + [-64.6690666074397, 32.388444543924], + [-64.6834270548595, 32.3854968316788], + [-64.6954617672714, 32.3763221285869], + [-64.70438689565, 32.3704254760469], + [-64.7117569982798, 32.368132600249], + [-64.7061764744404, 32.3600110593559], + [-64.700531552697, 32.3590601356818], + [-64.6940348033967, 32.3640708659835], + [-64.6895164826082, 32.3633598579866], + [-64.6864150099255, 32.3547797587266], + [-64.6824635995504, 32.3540628176846], + [-64.6835876652835, 32.3626447677968], + [-64.6801998697415, 32.3631199096979], + [-64.6672170444687, 32.3597751617473], + [-64.6598811264978, 32.3497625771755], + [-64.6737331235384, 32.3390281851635], + [-64.6887090648183, 32.3342439408053], + [-64.706732854446, 32.3429010723036], + [-64.7149301576112, 32.3552188753513], + [-64.7185967666669, 32.3552239212394], + [-64.7214189847314, 32.3518830231342], + [-64.7270616067222, 32.3466461715475], + [-64.734962460882, 32.3442819830499], + [-64.7383521549094, 32.3407216514918], + [-64.7411729976333, 32.3311790864627], + [-64.7423019216485, 32.323311561213], + [-64.7462482354281, 32.318538611581], + [-64.7566773739613, 32.3130509130175], + [-64.768738200563, 32.3088369816572], + [-64.7799734332998, 32.3072000581802] + ] + ] + }, + "type": "Feature", + "id": "BMU", + "properties": { "name": "Bermuda", "id": "BMU", "centroid": [-64.47, 32.18] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-62.846468, -22.034985], + [-63.986838, -21.993644], + [-64.377021, -22.798091], + [-64.964892, -22.075862], + [-66.273339, -21.83231], + [-67.106674, -22.735925], + [-67.82818, -22.872919], + [-68.219913, -21.494347], + [-68.757167, -20.372658], + [-68.442225, -19.405068], + [-68.966818, -18.981683], + [-69.100247, -18.260125], + [-69.590424, -17.580012], + [-68.959635, -16.500698], + [-69.389764, -15.660129], + [-69.160347, -15.323974], + [-69.339535, -14.953195], + [-68.948887, -14.453639], + [-68.929224, -13.602684], + [-68.88008, -12.899729], + [-68.66508, -12.5613], + [-69.529678, -10.951734], + [-68.786158, -11.03638], + [-68.271254, -11.014521], + [-68.048192, -10.712059], + [-67.173801, -10.306812], + [-66.646908, -9.931331], + [-65.338435, -9.761988], + [-65.444837, -10.511451], + [-65.321899, -10.895872], + [-65.402281, -11.56627], + [-64.316353, -12.461978], + [-63.196499, -12.627033], + [-62.80306, -13.000653], + [-62.127081, -13.198781], + [-61.713204, -13.489202], + [-61.084121, -13.479384], + [-60.503304, -13.775955], + [-60.459198, -14.354007], + [-60.264326, -14.645979], + [-60.251149, -15.077219], + [-60.542966, -15.09391], + [-60.15839, -16.258284], + [-58.24122, -16.299573], + [-58.388058, -16.877109], + [-58.280804, -17.27171], + [-57.734558, -17.552468], + [-57.498371, -18.174188], + [-57.676009, -18.96184], + [-57.949997, -19.400004], + [-57.853802, -19.969995], + [-58.166392, -20.176701], + [-58.183471, -19.868399], + [-59.115042, -19.356906], + [-60.043565, -19.342747], + [-61.786326, -19.633737], + [-62.265961, -20.513735], + [-62.291179, -21.051635], + [-62.685057, -22.249029], + [-62.846468, -22.034985] + ] + ] + }, + "type": "Feature", + "id": "BOL", + "properties": { "name": "Bolivia", "id": "BOL", "centroid": [-68.1, -16.2] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-57.625133, -30.216295], + [-56.2909, -28.852761], + [-55.162286, -27.881915], + [-54.490725, -27.474757], + [-53.648735, -26.923473], + [-53.628349, -26.124865], + [-54.13005, -25.547639], + [-54.625291, -25.739255], + [-54.428946, -25.162185], + [-54.293476, -24.5708], + [-54.29296, -24.021014], + [-54.652834, -23.839578], + [-55.027902, -24.001274], + [-55.400747, -23.956935], + [-55.517639, -23.571998], + [-55.610683, -22.655619], + [-55.797958, -22.35693], + [-56.473317, -22.0863], + [-56.88151, -22.282154], + [-57.937156, -22.090176], + [-57.870674, -20.732688], + [-58.166392, -20.176701], + [-57.853802, -19.969995], + [-57.949997, -19.400004], + [-57.676009, -18.96184], + [-57.498371, -18.174188], + [-57.734558, -17.552468], + [-58.280804, -17.27171], + [-58.388058, -16.877109], + [-58.24122, -16.299573], + [-60.15839, -16.258284], + [-60.542966, -15.09391], + [-60.251149, -15.077219], + [-60.264326, -14.645979], + [-60.459198, -14.354007], + [-60.503304, -13.775955], + [-61.084121, -13.479384], + [-61.713204, -13.489202], + [-62.127081, -13.198781], + [-62.80306, -13.000653], + [-63.196499, -12.627033], + [-64.316353, -12.461978], + [-65.402281, -11.56627], + [-65.321899, -10.895872], + [-65.444837, -10.511451], + [-65.338435, -9.761988], + [-66.646908, -9.931331], + [-67.173801, -10.306812], + [-68.048192, -10.712059], + [-68.271254, -11.014521], + [-68.786158, -11.03638], + [-69.529678, -10.951734], + [-70.093752, -11.123972], + [-70.548686, -11.009147], + [-70.481894, -9.490118], + [-71.302412, -10.079436], + [-72.184891, -10.053598], + [-72.563033, -9.520194], + [-73.226713, -9.462213], + [-73.015383, -9.032833], + [-73.571059, -8.424447], + [-73.987235, -7.52383], + [-73.723401, -7.340999], + [-73.724487, -6.918595], + [-73.120027, -6.629931], + [-73.219711, -6.089189], + [-72.964507, -5.741251], + [-72.891928, -5.274561], + [-71.748406, -4.593983], + [-70.928843, -4.401591], + [-70.794769, -4.251265], + [-69.893635, -4.298187], + [-69.444102, -1.556287], + [-69.420486, -1.122619], + [-69.577065, -0.549992], + [-70.020656, -0.185156], + [-70.015566, 0.541414], + [-69.452396, 0.706159], + [-69.252434, 0.602651], + [-69.218638, 0.985677], + [-69.804597, 1.089081], + [-69.816973, 1.714805], + [-67.868565, 1.692455], + [-67.53781, 2.037163], + [-67.259998, 1.719999], + [-67.065048, 1.130112], + [-66.876326, 1.253361], + [-66.325765, 0.724452], + [-65.548267, 0.789254], + [-65.354713, 1.095282], + [-64.611012, 1.328731], + [-64.199306, 1.492855], + [-64.083085, 1.916369], + [-63.368788, 2.2009], + [-63.422867, 2.411068], + [-64.269999, 2.497006], + [-64.408828, 3.126786], + [-64.368494, 3.79721], + [-64.816064, 4.056445], + [-64.628659, 4.148481], + [-63.888343, 4.02053], + [-63.093198, 3.770571], + [-62.804533, 4.006965], + [-62.08543, 4.162124], + [-60.966893, 4.536468], + [-60.601179, 4.918098], + [-60.733574, 5.200277], + [-60.213683, 5.244486], + [-59.980959, 5.014061], + [-60.111002, 4.574967], + [-59.767406, 4.423503], + [-59.53804, 3.958803], + [-59.815413, 3.606499], + [-59.974525, 2.755233], + [-59.718546, 2.24963], + [-59.646044, 1.786894], + [-59.030862, 1.317698], + [-58.540013, 1.268088], + [-58.429477, 1.463942], + [-58.11345, 1.507195], + [-57.660971, 1.682585], + [-57.335823, 1.948538], + [-56.782704, 1.863711], + [-56.539386, 1.899523], + [-55.995698, 1.817667], + [-55.9056, 2.021996], + [-56.073342, 2.220795], + [-55.973322, 2.510364], + [-55.569755, 2.421506], + [-55.097587, 2.523748], + [-54.524754, 2.311849], + [-54.088063, 2.105557], + [-53.778521, 2.376703], + [-53.554839, 2.334897], + [-53.418465, 2.053389], + [-52.939657, 2.124858], + [-52.556425, 2.504705], + [-52.249338, 3.241094], + [-51.657797, 4.156232], + [-51.317146, 4.203491], + [-51.069771, 3.650398], + [-50.508875, 1.901564], + [-49.974076, 1.736483], + [-49.947101, 1.04619], + [-50.699251, 0.222984], + [-50.388211, -0.078445], + [-48.620567, -0.235489], + [-48.584497, -1.237805], + [-47.824956, -0.581618], + [-46.566584, -0.941028], + [-44.905703, -1.55174], + [-44.417619, -2.13775], + [-44.581589, -2.691308], + [-43.418791, -2.38311], + [-41.472657, -2.912018], + [-39.978665, -2.873054], + [-38.500383, -3.700652], + [-37.223252, -4.820946], + [-36.452937, -5.109404], + [-35.597796, -5.149504], + [-35.235389, -5.464937], + [-34.89603, -6.738193], + [-34.729993, -7.343221], + [-35.128212, -8.996401], + [-35.636967, -9.649282], + [-37.046519, -11.040721], + [-37.683612, -12.171195], + [-38.423877, -13.038119], + [-38.673887, -13.057652], + [-38.953276, -13.79337], + [-38.882298, -15.667054], + [-39.161092, -17.208407], + [-39.267339, -17.867746], + [-39.583521, -18.262296], + [-39.760823, -19.599113], + [-40.774741, -20.904512], + [-40.944756, -21.937317], + [-41.754164, -22.370676], + [-41.988284, -22.97007], + [-43.074704, -22.967693], + [-44.647812, -23.351959], + [-45.352136, -23.796842], + [-46.472093, -24.088969], + [-47.648972, -24.885199], + [-48.495458, -25.877025], + [-48.641005, -26.623698], + [-48.474736, -27.175912], + [-48.66152, -28.186135], + [-48.888457, -28.674115], + [-49.587329, -29.224469], + [-50.696874, -30.984465], + [-51.576226, -31.777698], + [-52.256081, -32.24537], + [-52.7121, -33.196578], + [-53.373662, -33.768378], + [-53.650544, -33.202004], + [-53.209589, -32.727666], + [-53.787952, -32.047243], + [-54.572452, -31.494511], + [-55.60151, -30.853879], + [-55.973245, -30.883076], + [-56.976026, -30.109686], + [-57.625133, -30.216295] + ] + ] + }, + "type": "Feature", + "id": "BRA", + "properties": { "name": "Brazil", "id": "BRA", "centroid": [-47.55, -15.47] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [114.204017, 4.525874], + [114.599961, 4.900011], + [115.45071, 5.44773], + [115.4057, 4.955228], + [115.347461, 4.316636], + [114.869557, 4.348314], + [114.659596, 4.007637], + [114.204017, 4.525874] + ] + ] + }, + "type": "Feature", + "id": "BRN", + "properties": { "name": "Brunei", "id": "BRN", "centroid": [115, 4.52] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [91.696657, 27.771742], + [92.103712, 27.452614], + [92.033484, 26.83831], + [91.217513, 26.808648], + [90.373275, 26.875724], + [89.744528, 26.719403], + [88.835643, 27.098966], + [88.814248, 27.299316], + [89.47581, 28.042759], + [90.015829, 28.296439], + [90.730514, 28.064954], + [91.258854, 28.040614], + [91.696657, 27.771742] + ] + ] + }, + "type": "Feature", + "id": "BTN", + "properties": { "name": "Bhutan", "id": "BTN", "centroid": [89.45, 27.31] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [25.649163, -18.536026], + [25.850391, -18.714413], + [26.164791, -19.293086], + [27.296505, -20.39152], + [27.724747, -20.499059], + [27.727228, -20.851802], + [28.02137, -21.485975], + [28.794656, -21.639454], + [29.432188, -22.091313], + [28.017236, -22.827754], + [27.11941, -23.574323], + [26.786407, -24.240691], + [26.485753, -24.616327], + [25.941652, -24.696373], + [25.765849, -25.174845], + [25.664666, -25.486816], + [25.025171, -25.71967], + [24.211267, -25.670216], + [23.73357, -25.390129], + [23.312097, -25.26869], + [22.824271, -25.500459], + [22.579532, -25.979448], + [22.105969, -26.280256], + [21.605896, -26.726534], + [20.889609, -26.828543], + [20.66647, -26.477453], + [20.758609, -25.868136], + [20.165726, -24.917962], + [19.895768, -24.76779], + [19.895458, -21.849157], + [20.881134, -21.814327], + [20.910641, -18.252219], + [21.65504, -18.219146], + [23.196858, -17.869038], + [23.579006, -18.281261], + [24.217365, -17.889347], + [24.520705, -17.887125], + [25.084443, -17.661816], + [25.264226, -17.73654], + [25.649163, -18.536026] + ] + ] + }, + "type": "Feature", + "id": "BWA", + "properties": { "name": "Botswana", "id": "BWA", "centroid": [25.57, -24.45] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [15.27946, 7.421925], + [16.106232, 7.497088], + [16.290562, 7.754307], + [16.456185, 7.734774], + [16.705988, 7.508328], + [17.96493, 7.890914], + [18.389555, 8.281304], + [18.911022, 8.630895], + [18.81201, 8.982915], + [19.094008, 9.074847], + [20.059685, 9.012706], + [21.000868, 9.475985], + [21.723822, 10.567056], + [22.231129, 10.971889], + [22.864165, 11.142395], + [22.977544, 10.714463], + [23.554304, 10.089255], + [23.55725, 9.681218], + [23.394779, 9.265068], + [23.459013, 8.954286], + [23.805813, 8.666319], + [24.567369, 8.229188], + [25.114932, 7.825104], + [25.124131, 7.500085], + [25.796648, 6.979316], + [26.213418, 6.546603], + [26.465909, 5.946717], + [27.213409, 5.550953], + [27.374226, 5.233944], + [27.044065, 5.127853], + [26.402761, 5.150875], + [25.650455, 5.256088], + [25.278798, 5.170408], + [25.128833, 4.927245], + [24.805029, 4.897247], + [24.410531, 5.108784], + [23.297214, 4.609693], + [22.84148, 4.710126], + [22.704124, 4.633051], + [22.405124, 4.02916], + [21.659123, 4.224342], + [20.927591, 4.322786], + [20.290679, 4.691678], + [19.467784, 5.031528], + [18.932312, 4.709506], + [18.542982, 4.201785], + [18.453065, 3.504386], + [17.8099, 3.560196], + [17.133042, 3.728197], + [16.537058, 3.198255], + [16.012852, 2.26764], + [15.907381, 2.557389], + [15.862732, 3.013537], + [15.405396, 3.335301], + [15.03622, 3.851367], + [14.950953, 4.210389], + [14.478372, 4.732605], + [14.558936, 5.030598], + [14.459407, 5.451761], + [14.53656, 6.226959], + [14.776545, 6.408498], + [15.27946, 7.421925] + ] + ] + }, + "type": "Feature", + "id": "CAF", + "properties": { "name": "Central African Republic", "id": "CAF", "centroid": [18.33, 4.22] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-63.6645, 46.55001], + [-62.9393, 46.41587], + [-62.01208, 46.44314], + [-62.50391, 46.03339], + [-62.87433, 45.96818], + [-64.1428, 46.39265], + [-64.39261, 46.72747], + [-64.01486, 47.03601], + [-63.6645, 46.55001] + ] + ], + [ + [ + [-61.806305, 49.10506], + [-62.29318, 49.08717], + [-63.58926, 49.40069], + [-64.51912, 49.87304], + [-64.17322, 49.95718], + [-62.85829, 49.70641], + [-61.835585, 49.28855], + [-61.806305, 49.10506] + ] + ], + [ + [ + [-123.510002, 48.510011], + [-124.012891, 48.370846], + [-125.655013, 48.825005], + [-125.954994, 49.179996], + [-126.850004, 49.53], + [-127.029993, 49.814996], + [-128.059336, 49.994959], + [-128.444584, 50.539138], + [-128.358414, 50.770648], + [-127.308581, 50.552574], + [-126.695001, 50.400903], + [-125.755007, 50.295018], + [-125.415002, 49.950001], + [-124.920768, 49.475275], + [-123.922509, 49.062484], + [-123.510002, 48.510011] + ] + ], + [ + [ + [-56.134036, 50.68701], + [-56.795882, 49.812309], + [-56.143105, 50.150117], + [-55.471492, 49.935815], + [-55.822401, 49.587129], + [-54.935143, 49.313011], + [-54.473775, 49.556691], + [-53.476549, 49.249139], + [-53.786014, 48.516781], + [-53.086134, 48.687804], + [-52.958648, 48.157164], + [-52.648099, 47.535548], + [-53.069158, 46.655499], + [-53.521456, 46.618292], + [-54.178936, 46.807066], + [-53.961869, 47.625207], + [-54.240482, 47.752279], + [-55.400773, 46.884994], + [-55.997481, 46.91972], + [-55.291219, 47.389562], + [-56.250799, 47.632545], + [-57.325229, 47.572807], + [-59.266015, 47.603348], + [-59.419494, 47.899454], + [-58.796586, 48.251525], + [-59.231625, 48.523188], + [-58.391805, 49.125581], + [-57.35869, 50.718274], + [-56.73865, 51.287438], + [-55.870977, 51.632094], + [-55.406974, 51.588273], + [-55.600218, 51.317075], + [-56.134036, 50.68701] + ] + ], + [ + [ + [-132.710008, 54.040009], + [-132.710009, 54.040009], + [-132.710008, 54.040009], + [-132.710008, 54.040009], + [-131.74999, 54.120004], + [-132.04948, 52.984621], + [-131.179043, 52.180433], + [-131.57783, 52.182371], + [-132.180428, 52.639707], + [-132.549992, 53.100015], + [-133.054611, 53.411469], + [-133.239664, 53.85108], + [-133.180004, 54.169975], + [-132.710008, 54.040009] + ] + ], + [ + [ + [-79.26582, 62.158675], + [-79.65752, 61.63308], + [-80.09956, 61.7181], + [-80.36215, 62.01649], + [-80.315395, 62.085565], + [-79.92939, 62.3856], + [-79.52002, 62.36371], + [-79.26582, 62.158675] + ] + ], + [ + [ + [-81.89825, 62.7108], + [-83.06857, 62.15922], + [-83.77462, 62.18231], + [-83.99367, 62.4528], + [-83.25048, 62.91409], + [-81.87699, 62.90458], + [-81.89825, 62.7108] + ] + ], + [ + [ + [-85.161308, 65.657285], + [-84.975764, 65.217518], + [-84.464012, 65.371772], + [-83.882626, 65.109618], + [-82.787577, 64.766693], + [-81.642014, 64.455136], + [-81.55344, 63.979609], + [-80.817361, 64.057486], + [-80.103451, 63.725981], + [-80.99102, 63.411246], + [-82.547178, 63.651722], + [-83.108798, 64.101876], + [-84.100417, 63.569712], + [-85.523405, 63.052379], + [-85.866769, 63.637253], + [-87.221983, 63.541238], + [-86.35276, 64.035833], + [-86.224886, 64.822917], + [-85.883848, 65.738778], + [-85.161308, 65.657285] + ] + ], + [ + [ + [-75.86588, 67.14886], + [-76.98687, 67.09873], + [-77.2364, 67.58809], + [-76.81166, 68.14856], + [-75.89521, 68.28721], + [-75.1145, 68.01036], + [-75.10333, 67.58202], + [-75.21597, 67.44425], + [-75.86588, 67.14886] + ] + ], + [ + [ + [-95.647681, 69.10769], + [-96.269521, 68.75704], + [-97.617401, 69.06003], + [-98.431801, 68.9507], + [-99.797401, 69.40003], + [-98.917401, 69.71003], + [-98.218261, 70.14354], + [-97.157401, 69.86003], + [-96.557401, 69.68003], + [-96.257401, 69.49003], + [-95.647681, 69.10769] + ] + ], + [ + [ + [-90.5471, 69.49766], + [-90.55151, 68.47499], + [-89.21515, 69.25873], + [-88.01966, 68.61508], + [-88.31749, 67.87338], + [-87.35017, 67.19872], + [-86.30607, 67.92146], + [-85.57664, 68.78456], + [-85.52197, 69.88211], + [-84.10081, 69.80539], + [-82.62258, 69.65826], + [-81.28043, 69.16202], + [-81.2202, 68.66567], + [-81.96436, 68.13253], + [-81.25928, 67.59716], + [-81.38653, 67.11078], + [-83.34456, 66.41154], + [-84.73542, 66.2573], + [-85.76943, 66.55833], + [-86.0676, 66.05625], + [-87.03143, 65.21297], + [-87.32324, 64.77563], + [-88.48296, 64.09897], + [-89.91444, 64.03273], + [-90.70398, 63.61017], + [-90.77004, 62.96021], + [-91.93342, 62.83508], + [-93.15698, 62.02469], + [-94.24153, 60.89865], + [-94.62931, 60.11021], + [-94.6846, 58.94882], + [-93.21502, 58.78212], + [-92.76462, 57.84571], + [-92.29703, 57.08709], + [-90.89769, 57.28468], + [-89.03953, 56.85172], + [-88.03978, 56.47162], + [-87.32421, 55.99914], + [-86.07121, 55.72383], + [-85.01181, 55.3026], + [-83.36055, 55.24489], + [-82.27285, 55.14832], + [-82.4362, 54.28227], + [-82.12502, 53.27703], + [-81.40075, 52.15788], + [-79.91289, 51.20842], + [-79.14301, 51.53393], + [-78.60191, 52.56208], + [-79.12421, 54.14145], + [-79.82958, 54.66772], + [-78.22874, 55.13645], + [-77.0956, 55.83741], + [-76.54137, 56.53423], + [-76.62319, 57.20263], + [-77.30226, 58.05209], + [-78.51688, 58.80458], + [-77.33676, 59.85261], + [-77.77272, 60.75788], + [-78.10687, 62.31964], + [-77.41067, 62.55053], + [-75.69621, 62.2784], + [-74.6682, 62.18111], + [-73.83988, 62.4438], + [-72.90853, 62.10507], + [-71.67708, 61.52535], + [-71.37369, 61.13717], + [-69.59042, 61.06141], + [-69.62033, 60.22125], + [-69.2879, 58.95736], + [-68.37455, 58.80106], + [-67.64976, 58.21206], + [-66.20178, 58.76731], + [-65.24517, 59.87071], + [-64.58352, 60.33558], + [-63.80475, 59.4426], + [-62.50236, 58.16708], + [-61.39655, 56.96745], + [-61.79866, 56.33945], + [-60.46853, 55.77548], + [-59.56962, 55.20407], + [-57.97508, 54.94549], + [-57.3332, 54.6265], + [-56.93689, 53.78032], + [-56.15811, 53.64749], + [-55.75632, 53.27036], + [-55.68338, 52.14664], + [-56.40916, 51.7707], + [-57.12691, 51.41972], + [-58.77482, 51.0643], + [-60.03309, 50.24277], + [-61.72366, 50.08046], + [-63.86251, 50.29099], + [-65.36331, 50.2982], + [-66.39905, 50.22897], + [-67.23631, 49.51156], + [-68.51114, 49.06836], + [-69.95362, 47.74488], + [-71.10458, 46.82171], + [-70.25522, 46.98606], + [-68.65, 48.3], + [-66.55243, 49.1331], + [-65.05626, 49.23278], + [-64.17099, 48.74248], + [-65.11545, 48.07085], + [-64.79854, 46.99297], + [-64.47219, 46.23849], + [-63.17329, 45.73902], + [-61.52072, 45.88377], + [-60.51815, 47.00793], + [-60.4486, 46.28264], + [-59.80287, 45.9204], + [-61.03988, 45.26525], + [-63.25471, 44.67014], + [-64.24656, 44.26553], + [-65.36406, 43.54523], + [-66.1234, 43.61867], + [-66.16173, 44.46512], + [-64.42549, 45.29204], + [-66.02605, 45.25931], + [-67.13741, 45.13753], + [-67.79134, 45.70281], + [-67.79046, 47.06636], + [-68.23444, 47.35486], + [-68.905, 47.185], + [-69.237216, 47.447781], + [-69.99997, 46.69307], + [-70.305, 45.915], + [-70.66, 45.46], + [-71.08482, 45.30524], + [-71.405, 45.255], + [-71.50506, 45.0082], + [-73.34783, 45.00738], + [-74.867, 45.00048], + [-75.31821, 44.81645], + [-76.375, 44.09631], + [-76.5, 44.018459], + [-76.820034, 43.628784], + [-77.737885, 43.629056], + [-78.72028, 43.625089], + [-79.171674, 43.466339], + [-79.01, 43.27], + [-78.92, 42.965], + [-78.939362, 42.863611], + [-80.247448, 42.3662], + [-81.277747, 42.209026], + [-82.439278, 41.675105], + [-82.690089, 41.675105], + [-83.02981, 41.832796], + [-83.142, 41.975681], + [-83.12, 42.08], + [-82.9, 42.43], + [-82.43, 42.98], + [-82.137642, 43.571088], + [-82.337763, 44.44], + [-82.550925, 45.347517], + [-83.592851, 45.816894], + [-83.469551, 45.994686], + [-83.616131, 46.116927], + [-83.890765, 46.116927], + [-84.091851, 46.275419], + [-84.14212, 46.512226], + [-84.3367, 46.40877], + [-84.6049, 46.4396], + [-84.543749, 46.538684], + [-84.779238, 46.637102], + [-84.87608, 46.900083], + [-85.652363, 47.220219], + [-86.461991, 47.553338], + [-87.439793, 47.94], + [-88.378114, 48.302918], + [-89.272917, 48.019808], + [-89.6, 48.01], + [-90.83, 48.27], + [-91.64, 48.14], + [-92.61, 48.45], + [-93.63087, 48.60926], + [-94.32914, 48.67074], + [-94.64, 48.84], + [-94.81758, 49.38905], + [-95.15609, 49.38425], + [-95.15907, 49], + [-97.22872, 49.0007], + [-100.65, 49], + [-104.04826, 48.99986], + [-107.05, 49], + [-110.05, 49], + [-113, 49], + [-116.04818, 49], + [-117.03121, 49], + [-120, 49], + [-122.84, 49], + [-122.97421, 49.002538], + [-124.91024, 49.98456], + [-125.62461, 50.41656], + [-127.43561, 50.83061], + [-127.99276, 51.71583], + [-127.85032, 52.32961], + [-129.12979, 52.75538], + [-129.30523, 53.56159], + [-130.51497, 54.28757], + [-130.53611, 54.80278], + [-129.98, 55.285], + [-130.00778, 55.91583], + [-131.70781, 56.55212], + [-132.73042, 57.69289], + [-133.35556, 58.41028], + [-134.27111, 58.86111], + [-134.945, 59.27056], + [-135.47583, 59.78778], + [-136.47972, 59.46389], + [-137.4525, 58.905], + [-138.34089, 59.56211], + [-139.039, 60], + [-140.013, 60.27682], + [-140.99778, 60.30639], + [-140.9925, 66.00003], + [-140.986, 69.712], + [-139.12052, 69.47102], + [-137.54636, 68.99002], + [-136.50358, 68.89804], + [-135.62576, 69.31512], + [-134.41464, 69.62743], + [-132.92925, 69.50534], + [-131.43136, 69.94451], + [-129.79471, 70.19369], + [-129.10773, 69.77927], + [-128.36156, 70.01286], + [-128.13817, 70.48384], + [-127.44712, 70.37721], + [-125.75632, 69.48058], + [-124.42483, 70.1584], + [-124.28968, 69.39969], + [-123.06108, 69.56372], + [-122.6835, 69.85553], + [-121.47226, 69.79778], + [-119.94288, 69.37786], + [-117.60268, 69.01128], + [-116.22643, 68.84151], + [-115.2469, 68.90591], + [-113.89794, 68.3989], + [-115.30489, 67.90261], + [-113.49727, 67.68815], + [-110.798, 67.80612], + [-109.94619, 67.98104], + [-108.8802, 67.38144], + [-107.79239, 67.88736], + [-108.81299, 68.31164], + [-108.16721, 68.65392], + [-106.95, 68.7], + [-106.15, 68.8], + [-105.34282, 68.56122], + [-104.33791, 68.018], + [-103.22115, 68.09775], + [-101.45433, 67.64689], + [-99.90195, 67.80566], + [-98.4432, 67.78165], + [-98.5586, 68.40394], + [-97.66948, 68.57864], + [-96.11991, 68.23939], + [-96.12588, 67.29338], + [-95.48943, 68.0907], + [-94.685, 68.06383], + [-94.23282, 69.06903], + [-95.30408, 69.68571], + [-96.47131, 70.08976], + [-96.39115, 71.19482], + [-95.2088, 71.92053], + [-93.88997, 71.76015], + [-92.87818, 71.31869], + [-91.51964, 70.19129], + [-92.40692, 69.69997], + [-90.5471, 69.49766] + ] + ], + [ + [ + [-114.16717, 73.12145], + [-114.66634, 72.65277], + [-112.44102, 72.9554], + [-111.05039, 72.4504], + [-109.92035, 72.96113], + [-109.00654, 72.63335], + [-108.18835, 71.65089], + [-107.68599, 72.06548], + [-108.39639, 73.08953], + [-107.51645, 73.23598], + [-106.52259, 73.07601], + [-105.40246, 72.67259], + [-104.77484, 71.6984], + [-104.46476, 70.99297], + [-102.78537, 70.49776], + [-100.98078, 70.02432], + [-101.08929, 69.58447], + [-102.73116, 69.50402], + [-102.09329, 69.11962], + [-102.43024, 68.75282], + [-104.24, 68.91], + [-105.96, 69.18], + [-107.12254, 69.11922], + [-109, 68.78], + [-111.534149, 68.630059], + [-113.3132, 68.53554], + [-113.85496, 69.00744], + [-115.22, 69.28], + [-116.10794, 69.16821], + [-117.34, 69.96], + [-116.67473, 70.06655], + [-115.13112, 70.2373], + [-113.72141, 70.19237], + [-112.4161, 70.36638], + [-114.35, 70.6], + [-116.48684, 70.52045], + [-117.9048, 70.54056], + [-118.43238, 70.9092], + [-116.11311, 71.30918], + [-117.65568, 71.2952], + [-119.40199, 71.55859], + [-118.56267, 72.30785], + [-117.86642, 72.70594], + [-115.18909, 73.31459], + [-114.16717, 73.12145] + ] + ], + [ + [ + [-104.5, 73.42], + [-105.38, 72.76], + [-106.94, 73.46], + [-106.6, 73.6], + [-105.26, 73.64], + [-104.5, 73.42] + ] + ], + [ + [ + [-76.34, 73.102685], + [-76.251404, 72.826385], + [-77.314438, 72.855545], + [-78.39167, 72.876656], + [-79.486252, 72.742203], + [-79.775833, 72.802902], + [-80.876099, 73.333183], + [-80.833885, 73.693184], + [-80.353058, 73.75972], + [-78.064438, 73.651932], + [-76.34, 73.102685] + ] + ], + [ + [ + [-86.562179, 73.157447], + [-85.774371, 72.534126], + [-84.850112, 73.340278], + [-82.31559, 73.750951], + [-80.600088, 72.716544], + [-80.748942, 72.061907], + [-78.770639, 72.352173], + [-77.824624, 72.749617], + [-75.605845, 72.243678], + [-74.228616, 71.767144], + [-74.099141, 71.33084], + [-72.242226, 71.556925], + [-71.200015, 70.920013], + [-68.786054, 70.525024], + [-67.91497, 70.121948], + [-66.969033, 69.186087], + [-68.805123, 68.720198], + [-66.449866, 68.067163], + [-64.862314, 67.847539], + [-63.424934, 66.928473], + [-61.851981, 66.862121], + [-62.163177, 66.160251], + [-63.918444, 64.998669], + [-65.14886, 65.426033], + [-66.721219, 66.388041], + [-68.015016, 66.262726], + [-68.141287, 65.689789], + [-67.089646, 65.108455], + [-65.73208, 64.648406], + [-65.320168, 64.382737], + [-64.669406, 63.392927], + [-65.013804, 62.674185], + [-66.275045, 62.945099], + [-68.783186, 63.74567], + [-67.369681, 62.883966], + [-66.328297, 62.280075], + [-66.165568, 61.930897], + [-68.877367, 62.330149], + [-71.023437, 62.910708], + [-72.235379, 63.397836], + [-71.886278, 63.679989], + [-73.378306, 64.193963], + [-74.834419, 64.679076], + [-74.818503, 64.389093], + [-77.70998, 64.229542], + [-78.555949, 64.572906], + [-77.897281, 65.309192], + [-76.018274, 65.326969], + [-73.959795, 65.454765], + [-74.293883, 65.811771], + [-73.944912, 66.310578], + [-72.651167, 67.284576], + [-72.92606, 67.726926], + [-73.311618, 68.069437], + [-74.843307, 68.554627], + [-76.869101, 68.894736], + [-76.228649, 69.147769], + [-77.28737, 69.76954], + [-78.168634, 69.826488], + [-78.957242, 70.16688], + [-79.492455, 69.871808], + [-81.305471, 69.743185], + [-84.944706, 69.966634], + [-87.060003, 70.260001], + [-88.681713, 70.410741], + [-89.51342, 70.762038], + [-88.467721, 71.218186], + [-89.888151, 71.222552], + [-90.20516, 72.235074], + [-89.436577, 73.129464], + [-88.408242, 73.537889], + [-85.826151, 73.803816], + [-86.562179, 73.157447] + ] + ], + [ + [ + [-100.35642, 73.84389], + [-99.16387, 73.63339], + [-97.38, 73.76], + [-97.12, 73.47], + [-98.05359, 72.99052], + [-96.54, 72.56], + [-96.72, 71.66], + [-98.35966, 71.27285], + [-99.32286, 71.35639], + [-100.01482, 71.73827], + [-102.5, 72.51], + [-102.48, 72.83], + [-100.43836, 72.70588], + [-101.54, 73.36], + [-100.35642, 73.84389] + ] + ], + [ + [ + [-93.196296, 72.771992], + [-94.269047, 72.024596], + [-95.409856, 72.061881], + [-96.033745, 72.940277], + [-96.018268, 73.43743], + [-95.495793, 73.862417], + [-94.503658, 74.134907], + [-92.420012, 74.100025], + [-90.509793, 73.856732], + [-92.003965, 72.966244], + [-93.196296, 72.771992] + ] + ], + [ + [ + [-120.46, 71.383602], + [-123.09219, 70.90164], + [-123.62, 71.34], + [-125.928949, 71.868688], + [-125.5, 72.292261], + [-124.80729, 73.02256], + [-123.94, 73.68], + [-124.91775, 74.29275], + [-121.53788, 74.44893], + [-120.10978, 74.24135], + [-117.55564, 74.18577], + [-116.58442, 73.89607], + [-115.51081, 73.47519], + [-116.76794, 73.22292], + [-119.22, 72.52], + [-120.46, 71.82], + [-120.46, 71.383602] + ] + ], + [ + [ + [-93.612756, 74.979997], + [-94.156909, 74.592347], + [-95.608681, 74.666864], + [-96.820932, 74.927623], + [-96.288587, 75.377828], + [-94.85082, 75.647218], + [-93.977747, 75.29649], + [-93.612756, 74.979997] + ] + ], + [ + [ + [-98.5, 76.72], + [-97.735585, 76.25656], + [-97.704415, 75.74344], + [-98.16, 75], + [-99.80874, 74.89744], + [-100.88366, 75.05736], + [-100.86292, 75.64075], + [-102.50209, 75.5638], + [-102.56552, 76.3366], + [-101.48973, 76.30537], + [-99.98349, 76.64634], + [-98.57699, 76.58859], + [-98.5, 76.72] + ] + ], + [ + [ + [-108.21141, 76.20168], + [-107.81943, 75.84552], + [-106.92893, 76.01282], + [-105.881, 75.9694], + [-105.70498, 75.47951], + [-106.31347, 75.00527], + [-109.7, 74.85], + [-112.22307, 74.41696], + [-113.74381, 74.39427], + [-113.87135, 74.72029], + [-111.79421, 75.1625], + [-116.31221, 75.04343], + [-117.7104, 75.2222], + [-116.34602, 76.19903], + [-115.40487, 76.47887], + [-112.59056, 76.14134], + [-110.81422, 75.54919], + [-109.0671, 75.47321], + [-110.49726, 76.42982], + [-109.5811, 76.79417], + [-108.54859, 76.67832], + [-108.21141, 76.20168] + ] + ], + [ + [ + [-94.684086, 77.097878], + [-93.573921, 76.776296], + [-91.605023, 76.778518], + [-90.741846, 76.449597], + [-90.969661, 76.074013], + [-89.822238, 75.847774], + [-89.187083, 75.610166], + [-87.838276, 75.566189], + [-86.379192, 75.482421], + [-84.789625, 75.699204], + [-82.753445, 75.784315], + [-81.128531, 75.713983], + [-80.057511, 75.336849], + [-79.833933, 74.923127], + [-80.457771, 74.657304], + [-81.948843, 74.442459], + [-83.228894, 74.564028], + [-86.097452, 74.410032], + [-88.15035, 74.392307], + [-89.764722, 74.515555], + [-92.422441, 74.837758], + [-92.768285, 75.38682], + [-92.889906, 75.882655], + [-93.893824, 76.319244], + [-95.962457, 76.441381], + [-97.121379, 76.751078], + [-96.745123, 77.161389], + [-94.684086, 77.097878] + ] + ], + [ + [ + [-116.198587, 77.645287], + [-116.335813, 76.876962], + [-117.106051, 76.530032], + [-118.040412, 76.481172], + [-119.899318, 76.053213], + [-121.499995, 75.900019], + [-122.854924, 76.116543], + [-122.854925, 76.116543], + [-121.157535, 76.864508], + [-119.103939, 77.51222], + [-117.570131, 77.498319], + [-116.198587, 77.645287] + ] + ], + [ + [ + [-93.840003, 77.519997], + [-94.295608, 77.491343], + [-96.169654, 77.555111], + [-96.436304, 77.834629], + [-94.422577, 77.820005], + [-93.720656, 77.634331], + [-93.840003, 77.519997] + ] + ], + [ + [ + [-110.186938, 77.697015], + [-112.051191, 77.409229], + [-113.534279, 77.732207], + [-112.724587, 78.05105], + [-111.264443, 78.152956], + [-109.854452, 77.996325], + [-110.186938, 77.697015] + ] + ], + [ + [ + [-109.663146, 78.601973], + [-110.881314, 78.40692], + [-112.542091, 78.407902], + [-112.525891, 78.550555], + [-111.50001, 78.849994], + [-110.963661, 78.804441], + [-109.663146, 78.601973] + ] + ], + [ + [ + [-95.830295, 78.056941], + [-97.309843, 77.850597], + [-98.124289, 78.082857], + [-98.552868, 78.458105], + [-98.631984, 78.87193], + [-97.337231, 78.831984], + [-96.754399, 78.765813], + [-95.559278, 78.418315], + [-95.830295, 78.056941] + ] + ], + [ + [ + [-100.060192, 78.324754], + [-99.670939, 77.907545], + [-101.30394, 78.018985], + [-102.949809, 78.343229], + [-105.176133, 78.380332], + [-104.210429, 78.67742], + [-105.41958, 78.918336], + [-105.492289, 79.301594], + [-103.529282, 79.165349], + [-100.825158, 78.800462], + [-100.060192, 78.324754] + ] + ], + [ + [ + [-87.02, 79.66], + [-85.81435, 79.3369], + [-87.18756, 79.0393], + [-89.03535, 78.28723], + [-90.80436, 78.21533], + [-92.87669, 78.34333], + [-93.95116, 78.75099], + [-93.93574, 79.11373], + [-93.14524, 79.3801], + [-94.974, 79.37248], + [-96.07614, 79.70502], + [-96.70972, 80.15777], + [-96.01644, 80.60233], + [-95.32345, 80.90729], + [-94.29843, 80.97727], + [-94.73542, 81.20646], + [-92.40984, 81.25739], + [-91.13289, 80.72345], + [-89.45, 80.509322], + [-87.81, 80.32], + [-87.02, 79.66] + ] + ], + [ + [ + [-68.5, 83.106322], + [-65.82735, 83.02801], + [-63.68, 82.9], + [-61.85, 82.6286], + [-61.89388, 82.36165], + [-64.334, 81.92775], + [-66.75342, 81.72527], + [-67.65755, 81.50141], + [-65.48031, 81.50657], + [-67.84, 80.9], + [-69.4697, 80.61683], + [-71.18, 79.8], + [-73.2428, 79.63415], + [-73.88, 79.430162], + [-76.90773, 79.32309], + [-75.52924, 79.19766], + [-76.22046, 79.01907], + [-75.39345, 78.52581], + [-76.34354, 78.18296], + [-77.88851, 77.89991], + [-78.36269, 77.50859], + [-79.75951, 77.20968], + [-79.61965, 76.98336], + [-77.91089, 77.022045], + [-77.88911, 76.777955], + [-80.56125, 76.17812], + [-83.17439, 76.45403], + [-86.11184, 76.29901], + [-87.6, 76.42], + [-89.49068, 76.47239], + [-89.6161, 76.95213], + [-87.76739, 77.17833], + [-88.26, 77.9], + [-87.65, 77.970222], + [-84.97634, 77.53873], + [-86.34, 78.18], + [-87.96192, 78.37181], + [-87.15198, 78.75867], + [-85.37868, 78.9969], + [-85.09495, 79.34543], + [-86.50734, 79.73624], + [-86.93179, 80.25145], + [-84.19844, 80.20836], + [-83.408696, 80.1], + [-81.84823, 80.46442], + [-84.1, 80.58], + [-87.59895, 80.51627], + [-89.36663, 80.85569], + [-90.2, 81.26], + [-91.36786, 81.5531], + [-91.58702, 81.89429], + [-90.1, 82.085], + [-88.93227, 82.11751], + [-86.97024, 82.27961], + [-85.5, 82.652273], + [-84.260005, 82.6], + [-83.18, 82.32], + [-82.42, 82.86], + [-81.1, 83.02], + [-79.30664, 83.13056], + [-76.25, 83.172059], + [-75.71878, 83.06404], + [-72.83153, 83.23324], + [-70.665765, 83.169781], + [-68.5, 83.106322] + ] + ] + ] + }, + "type": "Feature", + "id": "CAN", + "properties": { "name": "Canada", "id": "CAN", "centroid": [-75.42, 45.27] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [9.594226, 47.525058], + [9.632932, 47.347601], + [9.47997, 47.10281], + [9.932448, 46.920728], + [10.442701, 46.893546], + [10.363378, 46.483571], + [9.922837, 46.314899], + [9.182882, 46.440215], + [8.966306, 46.036932], + [8.489952, 46.005151], + [8.31663, 46.163642], + [7.755992, 45.82449], + [7.273851, 45.776948], + [6.843593, 45.991147], + [6.5001, 46.429673], + [6.022609, 46.27299], + [6.037389, 46.725779], + [6.768714, 47.287708], + [6.736571, 47.541801], + [7.192202, 47.449766], + [7.466759, 47.620582], + [8.317301, 47.61358], + [8.522612, 47.830828], + [9.594226, 47.525058] + ] + ] + }, + "type": "Feature", + "id": "CHE", + "properties": { "name": "Switzerland", "id": "CHE", "centroid": [7.28, 46.57] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-68.63401, -52.63637], + [-68.63335, -54.8695], + [-67.56244, -54.87001], + [-66.95992, -54.89681], + [-67.29103, -55.30124], + [-68.14863, -55.61183], + [-68.639991, -55.580018], + [-69.2321, -55.49906], + [-69.95809, -55.19843], + [-71.00568, -55.05383], + [-72.2639, -54.49514], + [-73.2852, -53.95752], + [-74.66253, -52.83749], + [-73.8381, -53.04743], + [-72.43418, -53.7154], + [-71.10773, -54.07433], + [-70.59178, -53.61583], + [-70.26748, -52.93123], + [-69.34565, -52.5183], + [-68.63401, -52.63637] + ] + ], + [ + [ + [-68.219913, -21.494347], + [-67.82818, -22.872919], + [-67.106674, -22.735925], + [-66.985234, -22.986349], + [-67.328443, -24.025303], + [-68.417653, -24.518555], + [-68.386001, -26.185016], + [-68.5948, -26.506909], + [-68.295542, -26.89934], + [-69.001235, -27.521214], + [-69.65613, -28.459141], + [-70.01355, -29.367923], + [-69.919008, -30.336339], + [-70.535069, -31.36501], + [-70.074399, -33.09121], + [-69.814777, -33.273886], + [-69.817309, -34.193571], + [-70.388049, -35.169688], + [-70.364769, -36.005089], + [-71.121881, -36.658124], + [-71.118625, -37.576827], + [-70.814664, -38.552995], + [-71.413517, -38.916022], + [-71.680761, -39.808164], + [-71.915734, -40.832339], + [-71.746804, -42.051386], + [-72.148898, -42.254888], + [-71.915424, -43.408565], + [-71.464056, -43.787611], + [-71.793623, -44.207172], + [-71.329801, -44.407522], + [-71.222779, -44.784243], + [-71.659316, -44.973689], + [-71.552009, -45.560733], + [-71.917258, -46.884838], + [-72.447355, -47.738533], + [-72.331161, -48.244238], + [-72.648247, -48.878618], + [-73.415436, -49.318436], + [-73.328051, -50.378785], + [-72.975747, -50.74145], + [-72.309974, -50.67701], + [-72.329404, -51.425956], + [-71.914804, -52.009022], + [-69.498362, -52.142761], + [-68.571545, -52.299444], + [-69.461284, -52.291951], + [-69.94278, -52.537931], + [-70.845102, -52.899201], + [-71.006332, -53.833252], + [-71.429795, -53.856455], + [-72.557943, -53.53141], + [-73.702757, -52.835069], + [-73.702757, -52.83507], + [-74.946763, -52.262754], + [-75.260026, -51.629355], + [-74.976632, -51.043396], + [-75.479754, -50.378372], + [-75.608015, -48.673773], + [-75.18277, -47.711919], + [-74.126581, -46.939253], + [-75.644395, -46.647643], + [-74.692154, -45.763976], + [-74.351709, -44.103044], + [-73.240356, -44.454961], + [-72.717804, -42.383356], + [-73.3889, -42.117532], + [-73.701336, -43.365776], + [-74.331943, -43.224958], + [-74.017957, -41.794813], + [-73.677099, -39.942213], + [-73.217593, -39.258689], + [-73.505559, -38.282883], + [-73.588061, -37.156285], + [-73.166717, -37.12378], + [-72.553137, -35.50884], + [-71.861732, -33.909093], + [-71.43845, -32.418899], + [-71.668721, -30.920645], + [-71.370083, -30.095682], + [-71.489894, -28.861442], + [-70.905124, -27.64038], + [-70.724954, -25.705924], + [-70.403966, -23.628997], + [-70.091246, -21.393319], + [-70.16442, -19.756468], + [-70.372572, -18.347975], + [-69.858444, -18.092694], + [-69.590424, -17.580012], + [-69.100247, -18.260125], + [-68.966818, -18.981683], + [-68.442225, -19.405068], + [-68.757167, -20.372658], + [-68.219913, -21.494347] + ] + ] + ] + }, + "type": "Feature", + "id": "CHL", + "properties": { "name": "Chile", "id": "CHL", "centroid": [-70.4, -33.24] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [121.777818, 24.394274], + [121.175632, 22.790857], + [120.74708, 21.970571], + [120.220083, 22.814861], + [120.106189, 23.556263], + [120.69468, 24.538451], + [121.495044, 25.295459], + [121.951244, 24.997596], + [121.777818, 24.394274] + ], + [ + [110.339188, 18.678395], + [109.47521, 18.197701], + [108.655208, 18.507682], + [108.626217, 19.367888], + [109.119056, 19.821039], + [110.211599, 20.101254], + [110.786551, 20.077534], + [111.010051, 19.69593], + [110.570647, 19.255879], + [110.339188, 18.678395] + ] + ], + [ + [ + [127.657407, 49.76027], + [129.397818, 49.4406], + [130.582293, 48.729687], + [130.987282, 47.790132], + [132.506672, 47.78897], + [133.373596, 48.183442], + [135.026311, 48.47823], + [134.500814, 47.57844], + [134.112362, 47.212467], + [133.769644, 46.116927], + [133.097127, 45.144066], + [131.883454, 45.321162], + [131.025212, 44.967953], + [131.288555, 44.11152], + [131.144688, 42.92999], + [130.633866, 42.903015], + [130.640016, 42.395009], + [129.994267, 42.985387], + [129.596669, 42.424982], + [128.052215, 41.994285], + [128.208433, 41.466772], + [127.343783, 41.503152], + [126.869083, 41.816569], + [126.182045, 41.107336], + [125.079942, 40.569824], + [124.265625, 39.928493], + [122.86757, 39.637788], + [122.131388, 39.170452], + [121.054554, 38.897471], + [121.585995, 39.360854], + [121.376757, 39.750261], + [122.168595, 40.422443], + [121.640359, 40.94639], + [120.768629, 40.593388], + [119.639602, 39.898056], + [119.023464, 39.252333], + [118.042749, 39.204274], + [117.532702, 38.737636], + [118.059699, 38.061476], + [118.87815, 37.897325], + [118.911636, 37.448464], + [119.702802, 37.156389], + [120.823457, 37.870428], + [121.711259, 37.481123], + [122.357937, 37.454484], + [122.519995, 36.930614], + [121.104164, 36.651329], + [120.637009, 36.11144], + [119.664562, 35.609791], + [119.151208, 34.909859], + [120.227525, 34.360332], + [120.620369, 33.376723], + [121.229014, 32.460319], + [121.908146, 31.692174], + [121.891919, 30.949352], + [121.264257, 30.676267], + [121.503519, 30.142915], + [122.092114, 29.83252], + [121.938428, 29.018022], + [121.684439, 28.225513], + [121.125661, 28.135673], + [120.395473, 27.053207], + [119.585497, 25.740781], + [118.656871, 24.547391], + [117.281606, 23.624501], + [115.890735, 22.782873], + [114.763827, 22.668074], + [114.152547, 22.22376], + [113.80678, 22.54834], + [113.241078, 22.051367], + [111.843592, 21.550494], + [110.785466, 21.397144], + [110.444039, 20.341033], + [109.889861, 20.282457], + [109.627655, 21.008227], + [109.864488, 21.395051], + [108.522813, 21.715212], + [108.05018, 21.55238], + [107.04342, 21.811899], + [106.567273, 22.218205], + [106.725403, 22.794268], + [105.811247, 22.976892], + [105.329209, 23.352063], + [104.476858, 22.81915], + [103.504515, 22.703757], + [102.706992, 22.708795], + [102.170436, 22.464753], + [101.652018, 22.318199], + [101.80312, 21.174367], + [101.270026, 21.201652], + [101.180005, 21.436573], + [101.150033, 21.849984], + [100.416538, 21.558839], + [99.983489, 21.742937], + [99.240899, 22.118314], + [99.531992, 22.949039], + [98.898749, 23.142722], + [98.660262, 24.063286], + [97.60472, 23.897405], + [97.724609, 25.083637], + [98.671838, 25.918703], + [98.712094, 26.743536], + [98.68269, 27.508812], + [98.246231, 27.747221], + [97.911988, 28.335945], + [97.327114, 28.261583], + [97.402561, 27.882536], + [97.051989, 27.699059], + [95.767822, 28.139816], + [94.306641, 27.547242], + [93.746338, 27.108034], + [92.033484, 26.83831], + [92.103712, 27.452614], + [91.696657, 27.771742], + [91.258854, 28.040614], + [90.730514, 28.064954], + [90.015829, 28.296439], + [89.47581, 28.042759], + [88.814248, 27.299316], + [88.730326, 28.086865], + [88.120441, 27.876542], + [86.954517, 27.974262], + [85.82332, 28.203576], + [85.011638, 28.642774], + [84.23458, 28.839894], + [83.898993, 29.320226], + [83.337115, 29.463732], + [82.327513, 30.115268], + [81.525804, 30.422717], + [81.111256, 30.183481], + [79.721367, 30.882715], + [78.738894, 31.515906], + [78.458446, 32.618164], + [79.176129, 32.48378], + [79.208892, 32.994395], + [78.811086, 33.506198], + [78.912269, 34.321936], + [77.837451, 35.49401], + [76.192848, 35.898403], + [75.896897, 36.666806], + [75.158028, 37.133031], + [74.980002, 37.41999], + [74.829986, 37.990007], + [74.864816, 38.378846], + [74.257514, 38.606507], + [73.928852, 38.505815], + [73.675379, 39.431237], + [73.960013, 39.660008], + [73.822244, 39.893973], + [74.776862, 40.366425], + [75.467828, 40.562072], + [76.526368, 40.427946], + [76.904484, 41.066486], + [78.187197, 41.185316], + [78.543661, 41.582243], + [80.11943, 42.123941], + [80.25999, 42.349999], + [80.18015, 42.920068], + [80.866206, 43.180362], + [79.966106, 44.917517], + [81.947071, 45.317027], + [82.458926, 45.53965], + [83.180484, 47.330031], + [85.16429, 47.000956], + [85.720484, 47.452969], + [85.768233, 48.455751], + [86.598776, 48.549182], + [87.35997, 49.214981], + [87.751264, 49.297198], + [88.013832, 48.599463], + [88.854298, 48.069082], + [90.280826, 47.693549], + [90.970809, 46.888146], + [90.585768, 45.719716], + [90.94554, 45.286073], + [92.133891, 45.115076], + [93.480734, 44.975472], + [94.688929, 44.352332], + [95.306875, 44.241331], + [95.762455, 43.319449], + [96.349396, 42.725635], + [97.451757, 42.74889], + [99.515817, 42.524691], + [100.845866, 42.663804], + [101.83304, 42.514873], + [103.312278, 41.907468], + [104.522282, 41.908347], + [104.964994, 41.59741], + [106.129316, 42.134328], + [107.744773, 42.481516], + [109.243596, 42.519446], + [110.412103, 42.871234], + [111.129682, 43.406834], + [111.829588, 43.743118], + [111.667737, 44.073176], + [111.348377, 44.457442], + [111.873306, 45.102079], + [112.436062, 45.011646], + [113.463907, 44.808893], + [114.460332, 45.339817], + [115.985096, 45.727235], + [116.717868, 46.388202], + [117.421701, 46.672733], + [118.874326, 46.805412], + [119.66327, 46.69268], + [119.772824, 47.048059], + [118.866574, 47.74706], + [118.064143, 48.06673], + [117.295507, 47.697709], + [116.308953, 47.85341], + [115.742837, 47.726545], + [115.485282, 48.135383], + [116.191802, 49.134598], + [116.678801, 49.888531], + [117.879244, 49.510983], + [119.288461, 50.142883], + [119.279366, 50.582908], + [120.18205, 51.643566], + [120.738191, 51.964115], + [120.725789, 52.516226], + [120.177089, 52.753886], + [121.003085, 53.251401], + [122.245748, 53.431726], + [123.571507, 53.458804], + [125.068211, 53.161045], + [125.946349, 52.792799], + [126.564399, 51.784255], + [126.939157, 51.353894], + [127.287456, 50.739797], + [127.657407, 49.76027] + ] + ], + [ + [ + [122.50662231445312, 23.467723846435547], + [122.78874206542969, 24.572216033935547], + [122.50662231445312, 23.467723846435547] + ] + ], + [ + [ + [121.17402648925781, 20.826547622680664], + [121.91168975830078, 21.6975154876709], + [121.17402648925781, 20.826547622680664] + ] + ], + [ + [ + [120.003662109375, 19.03096327846469], + [119.47631835937499, 18.020527657852337], + [120.003662109375, 19.03096327846469] + ] + ], + [ + [ + [119.06982421874999, 16.024695711685315], + [119.05883789062501, 15.040295996106765], + [119.06982421874999, 16.024695711685315] + ] + ], + [ + [ + [118.98193359375, 11.953349393643416], + [118.531494140625, 10.908830155722107], + [118.98193359375, 11.953349393643416] + ] + ], + [ + [ + [116.23535156249999, 7.993957436359008], + [115.55419921875, 7.18810087117902], + [116.23535156249999, 7.993957436359008] + ] + ], + [ + [ + [112.8515625, 3.743671274749731], + [111.785888671875, 3.4147247646241174], + [112.8515625, 3.743671274749731] + ] + ], + [ + [ + [108.30322265624999, 5.998533174329341], + [108.226318359375, 7.089990476360545], + [108.30322265624999, 5.998533174329341] + ] + ], + [ + [ + [110.06103515625, 11.26461221250444], + [110.31372070312499, 12.264863532756566], + [110.06103515625, 11.26461221250444] + ] + ], + [ + [ + [109.852294921875, 15.178180945596376], + [109.302978515625, 16.214674588248556], + [109.852294921875, 15.178180945596376] + ] + ], + [ + [ + [124.54185556547829, 25.89184586734392], + [124.53009788411983, 25.91074214095596], + [124.51834020276122, 25.930898166142125], + [124.54101573109565, 25.946015185031744], + [124.566804, 25.941563], + [124.584666, 25.908731], + [124.56873026572663, 25.884707275090506], + [124.54185556547829, 25.89184586734392] + ] + ], + [ + [ + [123.445178, 25.726102], + [123.43873310372739, 25.753273194189074], + [123.46896714150662, 25.78308731477693], + [123.51347836379274, 25.768810130270065], + [123.51095886064446, 25.71464081258226], + [123.46854722431526, 25.703722965606424], + [123.445178, 25.726102] + ] + ], + [ + [ + [119.646064, 23.550928], + [119.609108, 23.503738], + [119.578927, 23.502641], + [119.562297, 23.530627], + [119.566608, 23.584937], + [119.601717, 23.575613], + [119.61034, 23.604132], + [119.678093, 23.600294], + [119.691028, 23.547087], + [119.646064, 23.550928] + ] + ], + [ + [ + [123.65247095413902, 25.910742140955957], + [123.67598631685621, 25.947274936605876], + [123.70580043744403, 25.935517255247277], + [123.71503861565435, 25.912421809721465], + [123.69656225923376, 25.8788284344112], + [123.66968755898553, 25.88680686104739], + [123.65247095413902, 25.910742140955957] + ] + ], + [ + [ + [119.506246, 23.625518], + [119.52534, 23.62497], + [119.519181, 23.559705], + [119.47237, 23.556962], + [119.506246, 23.577259], + [119.506246, 23.625518] + ] + ], + [ + [ + [119.497623, 23.38679], + [119.516717, 23.349982], + [119.495159, 23.349982], + [119.497623, 23.38679] + ] + ], + [ + [ + [119.557369, 23.666634], + [119.586318, 23.675952], + [119.615268, 23.661153], + [119.608492, 23.620035], + [119.557369, 23.666634] + ] + ], + [ + [ + [122.066706, 25.6247], + [122.092575, 25.639268], + [122.087032, 25.61067], + [122.066706, 25.6247] + ] + ], + [ + [ + [121.468013, 22.67687], + [121.514824, 22.676318], + [121.513592, 22.631582], + [121.474788, 22.643734], + [121.468013, 22.67687] + ] + ], + [ + [ + [121.510513, 22.086972], + [121.575802, 22.0842], + [121.575186, 22.037055], + [121.604752, 22.022631], + [121.594281, 21.995443], + [121.533918, 22.022076], + [121.507433, 22.048704], + [121.510513, 22.086972] + ] + ], + [ + [ + [122.097503, 25.499987], + [122.122141, 25.495666], + [122.110438, 25.465952], + [122.097503, 25.499987] + ] + ], + [ + [ + [119.421247, 23.216949], + [119.453275, 23.216399], + [119.436029, 23.186146], + [119.421247, 23.216949] + ] + ], + [ + [ + [120.355011, 22.327439], + [120.383344, 22.355669], + [120.395663, 22.342385], + [120.355011, 22.327439] + ] + ] + ] + }, + "type": "Feature", + "id": "CHN", + "properties": { "name": "China", "id": "CHN", "centroid": [116.2, 39.55] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-2.856125, 4.994476], + [-3.311084, 4.984296], + [-4.00882, 5.179813], + [-4.649917, 5.168264], + [-5.834496, 4.993701], + [-6.528769, 4.705088], + [-7.518941, 4.338288], + [-7.712159, 4.364566], + [-7.635368, 5.188159], + [-7.539715, 5.313345], + [-7.570153, 5.707352], + [-7.993693, 6.12619], + [-8.311348, 6.193033], + [-8.60288, 6.467564], + [-8.385452, 6.911801], + [-8.485446, 7.395208], + [-8.439298, 7.686043], + [-8.280703, 7.68718], + [-8.221792, 8.123329], + [-8.299049, 8.316444], + [-8.203499, 8.455453], + [-7.8321, 8.575704], + [-8.079114, 9.376224], + [-8.309616, 9.789532], + [-8.229337, 10.12902], + [-8.029944, 10.206535], + [-7.89959, 10.297382], + [-7.622759, 10.147236], + [-6.850507, 10.138994], + [-6.666461, 10.430811], + [-6.493965, 10.411303], + [-6.205223, 10.524061], + [-6.050452, 10.096361], + [-5.816926, 10.222555], + [-5.404342, 10.370737], + [-4.954653, 10.152714], + [-4.779884, 9.821985], + [-4.330247, 9.610835], + [-3.980449, 9.862344], + [-3.511899, 9.900326], + [-2.827496, 9.642461], + [-2.56219, 8.219628], + [-2.983585, 7.379705], + [-3.24437, 6.250472], + [-2.810701, 5.389051], + [-2.856125, 4.994476] + ] + ] + }, + "type": "Feature", + "id": "CIV", + "properties": { "name": "Ivory Coast", "id": "CIV", "centroid": [-5.17, 6.49] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [13.075822, 2.267097], + [12.951334, 2.321616], + [12.35938, 2.192812], + [11.751665, 2.326758], + [11.276449, 2.261051], + [9.649158, 2.283866], + [9.795196, 3.073404], + [9.404367, 3.734527], + [8.948116, 3.904129], + [8.744924, 4.352215], + [8.488816, 4.495617], + [8.500288, 4.771983], + [8.757533, 5.479666], + [9.233163, 6.444491], + [9.522706, 6.453482], + [10.118277, 7.03877], + [10.497375, 7.055358], + [11.058788, 6.644427], + [11.745774, 6.981383], + [11.839309, 7.397042], + [12.063946, 7.799808], + [12.218872, 8.305824], + [12.753672, 8.717763], + [12.955468, 9.417772], + [13.1676, 9.640626], + [13.308676, 10.160362], + [13.57295, 10.798566], + [14.415379, 11.572369], + [14.468192, 11.904752], + [14.577178, 12.085361], + [14.181336, 12.483657], + [14.213531, 12.802035], + [14.495787, 12.859396], + [14.893386, 12.219048], + [14.960152, 11.555574], + [14.923565, 10.891325], + [15.467873, 9.982337], + [14.909354, 9.992129], + [14.627201, 9.920919], + [14.171466, 10.021378], + [13.954218, 9.549495], + [14.544467, 8.965861], + [14.979996, 8.796104], + [15.120866, 8.38215], + [15.436092, 7.692812], + [15.27946, 7.421925], + [14.776545, 6.408498], + [14.53656, 6.226959], + [14.459407, 5.451761], + [14.558936, 5.030598], + [14.478372, 4.732605], + [14.950953, 4.210389], + [15.03622, 3.851367], + [15.405396, 3.335301], + [15.862732, 3.013537], + [15.907381, 2.557389], + [16.012852, 2.26764], + [15.940919, 1.727673], + [15.146342, 1.964015], + [14.337813, 2.227875], + [13.075822, 2.267097] + ] + ] + }, + "type": "Feature", + "id": "CMR", + "properties": { "name": "Cameroon", "id": "CMR", "centroid": [11.35, 3.5] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [30.83386, 3.509166], + [30.773347, 2.339883], + [31.174149, 2.204465], + [30.85267, 1.849396], + [30.468508, 1.583805], + [30.086154, 1.062313], + [29.875779, 0.59738], + [29.819503, -0.20531], + [29.587838, -0.587406], + [29.579466, -1.341313], + [29.291887, -1.620056], + [29.254835, -2.21511], + [29.117479, -2.292211], + [29.024926, -2.839258], + [29.276384, -3.293907], + [29.339998, -4.499983], + [29.519987, -5.419979], + [29.419993, -5.939999], + [29.620032, -6.520015], + [30.199997, -7.079981], + [30.740015, -8.340007], + [30.346086, -8.238257], + [29.002912, -8.407032], + [28.734867, -8.526559], + [28.449871, -9.164918], + [28.673682, -9.605925], + [28.49607, -10.789884], + [28.372253, -11.793647], + [28.642417, -11.971569], + [29.341548, -12.360744], + [29.616001, -12.178895], + [29.699614, -13.257227], + [28.934286, -13.248958], + [28.523562, -12.698604], + [28.155109, -12.272481], + [27.388799, -12.132747], + [27.16442, -11.608748], + [26.553088, -11.92444], + [25.75231, -11.784965], + [25.418118, -11.330936], + [24.78317, -11.238694], + [24.314516, -11.262826], + [24.257155, -10.951993], + [23.912215, -10.926826], + [23.456791, -10.867863], + [22.837345, -11.017622], + [22.402798, -10.993075], + [22.155268, -11.084801], + [22.208753, -9.894796], + [21.875182, -9.523708], + [21.801801, -8.908707], + [21.949131, -8.305901], + [21.746456, -7.920085], + [21.728111, -7.290872], + [20.514748, -7.299606], + [20.601823, -6.939318], + [20.091622, -6.94309], + [20.037723, -7.116361], + [19.417502, -7.155429], + [19.166613, -7.738184], + [19.016752, -7.988246], + [18.464176, -7.847014], + [18.134222, -7.987678], + [17.47297, -8.068551], + [17.089996, -7.545689], + [16.860191, -7.222298], + [16.57318, -6.622645], + [16.326528, -5.87747], + [13.375597, -5.864241], + [13.024869, -5.984389], + [12.735171, -5.965682], + [12.322432, -6.100092], + [12.182337, -5.789931], + [12.436688, -5.684304], + [12.468004, -5.248362], + [12.631612, -4.991271], + [12.995517, -4.781103], + [13.25824, -4.882957], + [13.600235, -4.500138], + [14.144956, -4.510009], + [14.209035, -4.793092], + [14.582604, -4.970239], + [15.170992, -4.343507], + [15.75354, -3.855165], + [16.00629, -3.535133], + [15.972803, -2.712392], + [16.407092, -1.740927], + [16.865307, -1.225816], + [17.523716, -0.74383], + [17.638645, -0.424832], + [17.663553, -0.058084], + [17.82654, 0.288923], + [17.774192, 0.855659], + [17.898835, 1.741832], + [18.094276, 2.365722], + [18.393792, 2.900443], + [18.453065, 3.504386], + [18.542982, 4.201785], + [18.932312, 4.709506], + [19.467784, 5.031528], + [20.290679, 4.691678], + [20.927591, 4.322786], + [21.659123, 4.224342], + [22.405124, 4.02916], + [22.704124, 4.633051], + [22.84148, 4.710126], + [23.297214, 4.609693], + [24.410531, 5.108784], + [24.805029, 4.897247], + [25.128833, 4.927245], + [25.278798, 5.170408], + [25.650455, 5.256088], + [26.402761, 5.150875], + [27.044065, 5.127853], + [27.374226, 5.233944], + [27.979977, 4.408413], + [28.428994, 4.287155], + [28.696678, 4.455077], + [29.159078, 4.389267], + [29.715995, 4.600805], + [29.9535, 4.173699], + [30.83386, 3.509166] + ] + ] + }, + "type": "Feature", + "id": "COD", + "properties": { "name": "Democratic Republic of the Congo", "id": "COD", "centroid": [15.15, -4.2] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [12.995517, -4.781103], + [12.62076, -4.438023], + [12.318608, -4.60623], + [11.914963, -5.037987], + [11.093773, -3.978827], + [11.855122, -3.426871], + [11.478039, -2.765619], + [11.820964, -2.514161], + [12.495703, -2.391688], + [12.575284, -1.948511], + [13.109619, -2.42874], + [13.992407, -2.470805], + [14.29921, -1.998276], + [14.425456, -1.333407], + [14.316418, -0.552627], + [13.843321, 0.038758], + [14.276266, 1.19693], + [14.026669, 1.395677], + [13.282631, 1.314184], + [13.003114, 1.830896], + [13.075822, 2.267097], + [14.337813, 2.227875], + [15.146342, 1.964015], + [15.940919, 1.727673], + [16.012852, 2.26764], + [16.537058, 3.198255], + [17.133042, 3.728197], + [17.8099, 3.560196], + [18.453065, 3.504386], + [18.393792, 2.900443], + [18.094276, 2.365722], + [17.898835, 1.741832], + [17.774192, 0.855659], + [17.82654, 0.288923], + [17.663553, -0.058084], + [17.638645, -0.424832], + [17.523716, -0.74383], + [16.865307, -1.225816], + [16.407092, -1.740927], + [15.972803, -2.712392], + [16.00629, -3.535133], + [15.75354, -3.855165], + [15.170992, -4.343507], + [14.582604, -4.970239], + [14.209035, -4.793092], + [14.144956, -4.510009], + [13.600235, -4.500138], + [13.25824, -4.882957], + [12.995517, -4.781103] + ] + ] + }, + "type": "Feature", + "id": "COG", + "properties": { "name": "Republic of the Congo", "id": "COG", "centroid": [15.12, -4.09] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-75.373223, -0.152032], + [-75.801466, 0.084801], + [-76.292314, 0.416047], + [-76.57638, 0.256936], + [-77.424984, 0.395687], + [-77.668613, 0.825893], + [-77.855061, 0.809925], + [-78.855259, 1.380924], + [-78.990935, 1.69137], + [-78.617831, 1.766404], + [-78.662118, 2.267355], + [-78.42761, 2.629556], + [-77.931543, 2.696606], + [-77.510431, 3.325017], + [-77.12769, 3.849636], + [-77.496272, 4.087606], + [-77.307601, 4.667984], + [-77.533221, 5.582812], + [-77.318815, 5.845354], + [-77.476661, 6.691116], + [-77.881571, 7.223771], + [-77.753414, 7.70984], + [-77.431108, 7.638061], + [-77.242566, 7.935278], + [-77.474723, 8.524286], + [-77.353361, 8.670505], + [-76.836674, 8.638749], + [-76.086384, 9.336821], + [-75.6746, 9.443248], + [-75.664704, 9.774003], + [-75.480426, 10.61899], + [-74.906895, 11.083045], + [-74.276753, 11.102036], + [-74.197223, 11.310473], + [-73.414764, 11.227015], + [-72.627835, 11.731972], + [-72.238195, 11.95555], + [-71.75409, 12.437303], + [-71.399822, 12.376041], + [-71.137461, 12.112982], + [-71.331584, 11.776284], + [-71.973922, 11.608672], + [-72.227575, 11.108702], + [-72.614658, 10.821975], + [-72.905286, 10.450344], + [-73.027604, 9.73677], + [-73.304952, 9.152], + [-72.78873, 9.085027], + [-72.660495, 8.625288], + [-72.439862, 8.405275], + [-72.360901, 8.002638], + [-72.479679, 7.632506], + [-72.444487, 7.423785], + [-72.198352, 7.340431], + [-71.960176, 6.991615], + [-70.674234, 7.087785], + [-70.093313, 6.960376], + [-69.38948, 6.099861], + [-68.985319, 6.206805], + [-68.265052, 6.153268], + [-67.695087, 6.267318], + [-67.34144, 6.095468], + [-67.521532, 5.55687], + [-67.744697, 5.221129], + [-67.823012, 4.503937], + [-67.621836, 3.839482], + [-67.337564, 3.542342], + [-67.303173, 3.318454], + [-67.809938, 2.820655], + [-67.447092, 2.600281], + [-67.181294, 2.250638], + [-66.876326, 1.253361], + [-67.065048, 1.130112], + [-67.259998, 1.719999], + [-67.53781, 2.037163], + [-67.868565, 1.692455], + [-69.816973, 1.714805], + [-69.804597, 1.089081], + [-69.218638, 0.985677], + [-69.252434, 0.602651], + [-69.452396, 0.706159], + [-70.015566, 0.541414], + [-70.020656, -0.185156], + [-69.577065, -0.549992], + [-69.420486, -1.122619], + [-69.444102, -1.556287], + [-69.893635, -4.298187], + [-70.394044, -3.766591], + [-70.692682, -3.742872], + [-70.047709, -2.725156], + [-70.813476, -2.256865], + [-71.413646, -2.342802], + [-71.774761, -2.16979], + [-72.325787, -2.434218], + [-73.070392, -2.308954], + [-73.659504, -1.260491], + [-74.122395, -1.002833], + [-74.441601, -0.53082], + [-75.106625, -0.057205], + [-75.373223, -0.152032] + ] + ] + }, + "type": "Feature", + "id": "COL", + "properties": { "name": "Colombia", "id": "COL", "centroid": [-74, 4.34] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-82.965783, 8.225028], + [-83.508437, 8.446927], + [-83.711474, 8.656836], + [-83.596313, 8.830443], + [-83.632642, 9.051386], + [-83.909886, 9.290803], + [-84.303402, 9.487354], + [-84.647644, 9.615537], + [-84.713351, 9.908052], + [-84.97566, 10.086723], + [-84.911375, 9.795992], + [-85.110923, 9.55704], + [-85.339488, 9.834542], + [-85.660787, 9.933347], + [-85.797445, 10.134886], + [-85.791709, 10.439337], + [-85.659314, 10.754331], + [-85.941725, 10.895278], + [-85.71254, 11.088445], + [-85.561852, 11.217119], + [-84.903003, 10.952303], + [-84.673069, 11.082657], + [-84.355931, 10.999226], + [-84.190179, 10.79345], + [-83.895054, 10.726839], + [-83.655612, 10.938764], + [-83.40232, 10.395438], + [-83.015677, 9.992982], + [-82.546196, 9.566135], + [-82.932891, 9.476812], + [-82.927155, 9.07433], + [-82.719183, 8.925709], + [-82.868657, 8.807266], + [-82.829771, 8.626295], + [-82.913176, 8.423517], + [-82.965783, 8.225028] + ] + ] + }, + "type": "Feature", + "id": "CRI", + "properties": { "name": "Costa Rica", "id": "CRI", "centroid": [-84.02, 9.55] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-82.268151, 23.188611], + [-81.404457, 23.117271], + [-80.618769, 23.10598], + [-79.679524, 22.765303], + [-79.281486, 22.399202], + [-78.347434, 22.512166], + [-77.993296, 22.277194], + [-77.146422, 21.657851], + [-76.523825, 21.20682], + [-76.19462, 21.220565], + [-75.598222, 21.016624], + [-75.67106, 20.735091], + [-74.933896, 20.693905], + [-74.178025, 20.284628], + [-74.296648, 20.050379], + [-74.961595, 19.923435], + [-75.63468, 19.873774], + [-76.323656, 19.952891], + [-77.755481, 19.855481], + [-77.085108, 20.413354], + [-77.492655, 20.673105], + [-78.137292, 20.739949], + [-78.482827, 21.028613], + [-78.719867, 21.598114], + [-79.285, 21.559175], + [-80.217475, 21.827324], + [-80.517535, 22.037079], + [-81.820943, 22.192057], + [-82.169992, 22.387109], + [-81.795002, 22.636965], + [-82.775898, 22.68815], + [-83.494459, 22.168518], + [-83.9088, 22.154565], + [-84.052151, 21.910575], + [-84.54703, 21.801228], + [-84.974911, 21.896028], + [-84.447062, 22.20495], + [-84.230357, 22.565755], + [-83.77824, 22.788118], + [-83.267548, 22.983042], + [-82.510436, 23.078747], + [-82.268151, 23.188611] + ] + ] + }, + "type": "Feature", + "id": "CUB", + "properties": { "name": "Cuba", "id": "CUB", "centroid": [-82.21, 23.08] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [32.73178, 35.140026], + [32.802474, 35.145504], + [32.946961, 35.386703], + [33.667227, 35.373216], + [34.576474, 35.671596], + [33.900804, 35.245756], + [34.004881, 34.978098], + [32.979827, 34.571869], + [32.490296, 34.701655], + [32.256667, 35.103232], + [32.73178, 35.140026] + ] + ] + }, + "type": "Feature", + "id": "CYP", + "properties": { "name": "Cyprus", "id": "CYP", "centroid": [33.25, 35.1] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [16.960288, 48.596982], + [16.499283, 48.785808], + [16.029647, 48.733899], + [15.253416, 49.039074], + [14.901447, 48.964402], + [14.338898, 48.555305], + [13.595946, 48.877172], + [13.031329, 49.307068], + [12.521024, 49.547415], + [12.415191, 49.969121], + [12.240111, 50.266338], + [12.966837, 50.484076], + [13.338132, 50.733234], + [14.056228, 50.926918], + [14.307013, 51.117268], + [14.570718, 51.002339], + [15.016996, 51.106674], + [15.490972, 50.78473], + [16.238627, 50.697733], + [16.176253, 50.422607], + [16.719476, 50.215747], + [16.868769, 50.473974], + [17.554567, 50.362146], + [17.649445, 50.049038], + [18.392914, 49.988629], + [18.853144, 49.49623], + [18.554971, 49.495015], + [18.399994, 49.315001], + [18.170498, 49.271515], + [18.104973, 49.043983], + [17.913512, 48.996493], + [17.886485, 48.903475], + [17.545007, 48.800019], + [17.101985, 48.816969], + [16.960288, 48.596982] + ] + ] + }, + "type": "Feature", + "id": "CZE", + "properties": { "name": "Czech Republic", "id": "CZE", "centroid": [14.26, 50.05] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [9.921906, 54.983104], + [9.93958, 54.596642], + [10.950112, 54.363607], + [10.939467, 54.008693], + [11.956252, 54.196486], + [12.51844, 54.470371], + [13.647467, 54.075511], + [14.119686, 53.757029], + [14.353315, 53.248171], + [14.074521, 52.981263], + [14.4376, 52.62485], + [14.685026, 52.089947], + [14.607098, 51.745188], + [15.016996, 51.106674], + [14.570718, 51.002339], + [14.307013, 51.117268], + [14.056228, 50.926918], + [13.338132, 50.733234], + [12.966837, 50.484076], + [12.240111, 50.266338], + [12.415191, 49.969121], + [12.521024, 49.547415], + [13.031329, 49.307068], + [13.595946, 48.877172], + [13.243357, 48.416115], + [12.884103, 48.289146], + [13.025851, 47.637584], + [12.932627, 47.467646], + [12.62076, 47.672388], + [12.141357, 47.703083], + [11.426414, 47.523766], + [10.544504, 47.566399], + [10.402084, 47.302488], + [9.896068, 47.580197], + [9.594226, 47.525058], + [8.522612, 47.830828], + [8.317301, 47.61358], + [7.466759, 47.620582], + [7.593676, 48.333019], + [8.099279, 49.017784], + [6.65823, 49.201958], + [6.18632, 49.463803], + [6.242751, 49.902226], + [6.043073, 50.128052], + [6.156658, 50.803721], + [5.988658, 51.851616], + [6.589397, 51.852029], + [6.84287, 52.22844], + [7.092053, 53.144043], + [6.90514, 53.482162], + [7.100425, 53.693932], + [7.936239, 53.748296], + [8.121706, 53.527792], + [8.800734, 54.020786], + [8.572118, 54.395646], + [8.526229, 54.962744], + [9.282049, 54.830865], + [9.921906, 54.983104] + ] + ] + }, + "type": "Feature", + "id": "DEU", + "properties": { "name": "Germany", "id": "DEU", "centroid": [13.25, 52.3] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [43.081226, 12.699639], + [43.317852, 12.390148], + [43.286381, 11.974928], + [42.715874, 11.735641], + [43.145305, 11.46204], + [42.776852, 10.926879], + [42.55493, 11.10511], + [42.31414, 11.0342], + [41.75557, 11.05091], + [41.73959, 11.35511], + [41.66176, 11.6312], + [42, 12.1], + [42.35156, 12.54223], + [42.779642, 12.455416], + [43.081226, 12.699639] + ] + ] + }, + "type": "Feature", + "id": "DJI", + "properties": { "name": "Djibouti", "id": "DJI", "centroid": [42.2, 11.08] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [12.690006, 55.609991], + [12.089991, 54.800015], + [11.043543, 55.364864], + [10.903914, 55.779955], + [12.370904, 56.111407], + [12.690006, 55.609991] + ] + ], + [ + [ + [10.912182, 56.458621], + [10.667804, 56.081383], + [10.369993, 56.190007], + [9.649985, 55.469999], + [9.921906, 54.983104], + [9.282049, 54.830865], + [8.526229, 54.962744], + [8.120311, 55.517723], + [8.089977, 56.540012], + [8.256582, 56.809969], + [8.543438, 57.110003], + [9.424469, 57.172066], + [9.775559, 57.447941], + [10.580006, 57.730017], + [10.546106, 57.215733], + [10.25, 56.890016], + [10.369993, 56.609982], + [10.912182, 56.458621] + ] + ] + ] + }, + "type": "Feature", + "id": "DNK", + "properties": { "name": "Denmark", "id": "DNK", "centroid": [12.34, 55.41] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-71.712361, 19.714456], + [-71.587304, 19.884911], + [-70.806706, 19.880286], + [-70.214365, 19.622885], + [-69.950815, 19.648], + [-69.76925, 19.293267], + [-69.222126, 19.313214], + [-69.254346, 19.015196], + [-68.809412, 18.979074], + [-68.317943, 18.612198], + [-68.689316, 18.205142], + [-69.164946, 18.422648], + [-69.623988, 18.380713], + [-69.952934, 18.428307], + [-70.133233, 18.245915], + [-70.517137, 18.184291], + [-70.669298, 18.426886], + [-70.99995, 18.283329], + [-71.40021, 17.598564], + [-71.657662, 17.757573], + [-71.708305, 18.044997], + [-71.687738, 18.31666], + [-71.945112, 18.6169], + [-71.701303, 18.785417], + [-71.624873, 19.169838], + [-71.712361, 19.714456] + ] + ] + }, + "type": "Feature", + "id": "DOM", + "properties": { "name": "Dominican Republic", "id": "DOM", "centroid": [-61.24, 15.2] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [11.999506, 23.471668], + [8.572893, 21.565661], + [5.677566, 19.601207], + [4.267419, 19.155265], + [3.158133, 19.057364], + [3.146661, 19.693579], + [2.683588, 19.85623], + [2.060991, 20.142233], + [1.823228, 20.610809], + [-1.550055, 22.792666], + [-4.923337, 24.974574], + [-8.6844, 27.395744], + [-8.665124, 27.589479], + [-8.66559, 27.656426], + [-8.674116, 28.841289], + [-7.059228, 29.579228], + [-6.060632, 29.7317], + [-5.242129, 30.000443], + [-4.859646, 30.501188], + [-3.690441, 30.896952], + [-3.647498, 31.637294], + [-3.06898, 31.724498], + [-2.616605, 32.094346], + [-1.307899, 32.262889], + [-1.124551, 32.651522], + [-1.388049, 32.864015], + [-1.733455, 33.919713], + [-1.792986, 34.527919], + [-2.169914, 35.168396], + [-1.208603, 35.714849], + [-0.127454, 35.888662], + [0.503877, 36.301273], + [1.466919, 36.605647], + [3.161699, 36.783905], + [4.815758, 36.865037], + [5.32012, 36.716519], + [6.26182, 37.110655], + [7.330385, 37.118381], + [7.737078, 36.885708], + [8.420964, 36.946427], + [8.217824, 36.433177], + [8.376368, 35.479876], + [8.140981, 34.655146], + [7.524482, 34.097376], + [7.612642, 33.344115], + [8.430473, 32.748337], + [8.439103, 32.506285], + [9.055603, 32.102692], + [9.48214, 30.307556], + [9.805634, 29.424638], + [9.859998, 28.95999], + [9.683885, 28.144174], + [9.756128, 27.688259], + [9.629056, 27.140953], + [9.716286, 26.512206], + [9.319411, 26.094325], + [9.910693, 25.365455], + [9.948261, 24.936954], + [10.303847, 24.379313], + [10.771364, 24.562532], + [11.560669, 24.097909], + [11.999506, 23.471668] + ] + ] + }, + "type": "Feature", + "id": "DZA", + "properties": { "name": "Algeria", "id": "DZA", "centroid": [3.08, 36.42] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-80.302561, -3.404856], + [-79.770293, -2.657512], + [-79.986559, -2.220794], + [-80.368784, -2.685159], + [-80.967765, -2.246943], + [-80.764806, -1.965048], + [-80.933659, -1.057455], + [-80.58337, -0.906663], + [-80.399325, -0.283703], + [-80.020898, 0.36034], + [-80.09061, 0.768429], + [-79.542762, 0.982938], + [-78.855259, 1.380924], + [-77.855061, 0.809925], + [-77.668613, 0.825893], + [-77.424984, 0.395687], + [-76.57638, 0.256936], + [-76.292314, 0.416047], + [-75.801466, 0.084801], + [-75.373223, -0.152032], + [-75.233723, -0.911417], + [-75.544996, -1.56161], + [-76.635394, -2.608678], + [-77.837905, -3.003021], + [-78.450684, -3.873097], + [-78.639897, -4.547784], + [-79.205289, -4.959129], + [-79.624979, -4.454198], + [-80.028908, -4.346091], + [-80.442242, -4.425724], + [-80.469295, -4.059287], + [-80.184015, -3.821162], + [-80.302561, -3.404856] + ] + ] + }, + "type": "Feature", + "id": "ECU", + "properties": { "name": "Ecuador", "id": "ECU", "centroid": [-78.35, -0.15] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [34.9226, 29.50133], + [34.64174, 29.09942], + [34.42655, 28.34399], + [34.15451, 27.8233], + [33.92136, 27.6487], + [33.58811, 27.97136], + [33.13676, 28.41765], + [32.42323, 29.85108], + [32.32046, 29.76043], + [32.73482, 28.70523], + [33.34876, 27.69989], + [34.10455, 26.14227], + [34.47387, 25.59856], + [34.79507, 25.03375], + [35.69241, 23.92671], + [35.49372, 23.75237], + [35.52598, 23.10244], + [36.69069, 22.20485], + [36.86623, 22], + [32.9, 22], + [29.02, 22], + [25, 22], + [25, 25.6825], + [25, 29.238655], + [24.70007, 30.04419], + [24.95762, 30.6616], + [24.80287, 31.08929], + [25.16482, 31.56915], + [26.49533, 31.58568], + [27.45762, 31.32126], + [28.45048, 31.02577], + [28.91353, 30.87005], + [29.68342, 31.18686], + [30.09503, 31.4734], + [30.97693, 31.55586], + [31.68796, 31.4296], + [31.96041, 30.9336], + [32.19247, 31.26034], + [32.99392, 31.02407], + [33.7734, 30.96746], + [34.26544, 31.21936], + [34.9226, 29.50133] + ] + ] + }, + "type": "Feature", + "id": "EGY", + "properties": { "name": "Egypt", "id": "EGY", "centroid": [31.14, 30.01] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [42.35156, 12.54223], + [42.00975, 12.86582], + [41.59856, 13.45209], + [41.155194, 13.77332], + [40.8966, 14.11864], + [40.026219, 14.519579], + [39.34061, 14.53155], + [39.0994, 14.74064], + [38.51295, 14.50547], + [37.90607, 14.95943], + [37.59377, 14.2131], + [36.42951, 14.42211], + [36.323189, 14.822481], + [36.75386, 16.291874], + [36.85253, 16.95655], + [37.16747, 17.26314], + [37.904, 17.42754], + [38.41009, 17.998307], + [38.990623, 16.840626], + [39.26611, 15.922723], + [39.814294, 15.435647], + [41.179275, 14.49108], + [41.734952, 13.921037], + [42.276831, 13.343992], + [42.589576, 13.000421], + [43.081226, 12.699639], + [42.779642, 12.455416], + [42.35156, 12.54223] + ] + ] + }, + "type": "Feature", + "id": "ERI", + "properties": { "name": "Eritrea", "id": "ERI", "centroid": [38.55, 15.19] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-9.034818, 41.880571], + [-8.984433, 42.592775], + [-9.392884, 43.026625], + [-7.97819, 43.748338], + [-6.754492, 43.567909], + [-5.411886, 43.57424], + [-4.347843, 43.403449], + [-3.517532, 43.455901], + [-1.901351, 43.422802], + [-1.502771, 43.034014], + [0.338047, 42.579546], + [0.701591, 42.795734], + [1.826793, 42.343385], + [2.985999, 42.473015], + [3.039484, 41.89212], + [2.091842, 41.226089], + [0.810525, 41.014732], + [0.721331, 40.678318], + [0.106692, 40.123934], + [-0.278711, 39.309978], + [0.111291, 38.738514], + [-0.467124, 38.292366], + [-0.683389, 37.642354], + [-1.438382, 37.443064], + [-2.146453, 36.674144], + [-3.415781, 36.6589], + [-4.368901, 36.677839], + [-4.995219, 36.324708], + [-5.37716, 35.94685], + [-5.866432, 36.029817], + [-6.236694, 36.367677], + [-6.520191, 36.942913], + [-7.453726, 37.097788], + [-7.537105, 37.428904], + [-7.166508, 37.803894], + [-7.029281, 38.075764], + [-7.374092, 38.373059], + [-7.098037, 39.030073], + [-7.498632, 39.629571], + [-7.066592, 39.711892], + [-7.026413, 40.184524], + [-6.86402, 40.330872], + [-6.851127, 41.111083], + [-6.389088, 41.381815], + [-6.668606, 41.883387], + [-7.251309, 41.918346], + [-7.422513, 41.792075], + [-8.013175, 41.790886], + [-8.263857, 42.280469], + [-8.671946, 42.134689], + [-9.034818, 41.880571] + ] + ] + }, + "type": "Feature", + "id": "ESP", + "properties": { "name": "Spain", "id": "ESP", "centroid": [-3.45, 40.25] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [24.312863, 57.793424], + [24.428928, 58.383413], + [24.061198, 58.257375], + [23.42656, 58.612753], + [23.339795, 59.18724], + [24.604214, 59.465854], + [25.864189, 59.61109], + [26.949136, 59.445803], + [27.981114, 59.475388], + [28.131699, 59.300825], + [27.420166, 58.724581], + [27.716686, 57.791899], + [27.288185, 57.474528], + [26.463532, 57.476389], + [25.60281, 57.847529], + [25.164594, 57.970157], + [24.312863, 57.793424] + ] + ] + }, + "type": "Feature", + "id": "EST", + "properties": { "name": "Estonia", "id": "EST", "centroid": [24.48, 59.22] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [37.90607, 14.95943], + [38.51295, 14.50547], + [39.0994, 14.74064], + [39.34061, 14.53155], + [40.02625, 14.51959], + [40.8966, 14.11864], + [41.1552, 13.77333], + [41.59856, 13.45209], + [42.00975, 12.86582], + [42.35156, 12.54223], + [42, 12.1], + [41.66176, 11.6312], + [41.73959, 11.35511], + [41.75557, 11.05091], + [42.31414, 11.0342], + [42.55493, 11.10511], + [42.776852, 10.926879], + [42.55876, 10.57258], + [42.92812, 10.02194], + [43.29699, 9.54048], + [43.67875, 9.18358], + [46.94834, 7.99688], + [47.78942, 8.003], + [44.9636, 5.00162], + [43.66087, 4.95755], + [42.76967, 4.25259], + [42.12861, 4.23413], + [41.855083, 3.918912], + [41.1718, 3.91909], + [40.76848, 4.25702], + [39.85494, 3.83879], + [39.559384, 3.42206], + [38.89251, 3.50074], + [38.67114, 3.61607], + [38.43697, 3.58851], + [38.120915, 3.598605], + [36.855093, 4.447864], + [36.159079, 4.447864], + [35.817448, 4.776966], + [35.817448, 5.338232], + [35.298007, 5.506], + [34.70702, 6.59422], + [34.25032, 6.82607], + [34.0751, 7.22595], + [33.56829, 7.71334], + [32.95418, 7.78497], + [33.2948, 8.35458], + [33.8255, 8.37916], + [33.97498, 8.68456], + [33.96162, 9.58358], + [34.25745, 10.63009], + [34.73115, 10.91017], + [34.83163, 11.31896], + [35.26049, 12.08286], + [35.86363, 12.57828], + [36.27022, 13.56333], + [36.42951, 14.42211], + [37.59377, 14.2131], + [37.90607, 14.95943] + ] + ] + }, + "type": "Feature", + "id": "ETH", + "properties": { "name": "Ethiopia", "id": "ETH", "centroid": [38.42, 9.02] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [28.59193, 69.064777], + [28.445944, 68.364613], + [29.977426, 67.698297], + [29.054589, 66.944286], + [30.21765, 65.80598], + [29.54443, 64.948672], + [30.444685, 64.204453], + [30.035872, 63.552814], + [31.516092, 62.867687], + [31.139991, 62.357693], + [30.211107, 61.780028], + [28.069998, 60.503517], + [26.255173, 60.423961], + [24.496624, 60.057316], + [22.869695, 59.846373], + [22.290764, 60.391921], + [21.322244, 60.72017], + [21.544866, 61.705329], + [21.059211, 62.607393], + [21.536029, 63.189735], + [22.442744, 63.81781], + [24.730512, 64.902344], + [25.398068, 65.111427], + [25.294043, 65.534346], + [23.903379, 66.006927], + [23.56588, 66.396051], + [23.539473, 67.936009], + [21.978535, 68.616846], + [20.645593, 69.106247], + [21.244936, 69.370443], + [22.356238, 68.841741], + [23.66205, 68.891247], + [24.735679, 68.649557], + [25.689213, 69.092114], + [26.179622, 69.825299], + [27.732292, 70.164193], + [29.015573, 69.766491], + [28.59193, 69.064777] + ] + ] + }, + "type": "Feature", + "id": "FIN", + "properties": { "name": "Finland", "id": "FIN", "centroid": [25.03, 60.15] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [178.3736, -17.33992], + [178.71806, -17.62846], + [178.55271, -18.15059], + [177.93266, -18.28799], + [177.38146, -18.16432], + [177.28504, -17.72465], + [177.67087, -17.38114], + [178.12557, -17.50481], + [178.3736, -17.33992] + ] + ], + [ + [ + [179.364143, -16.801354], + [178.725059, -17.012042], + [178.596839, -16.63915], + [179.096609, -16.433984], + [179.413509, -16.379054], + [180, -16.067133], + [180, -16.555217], + [179.364143, -16.801354] + ] + ], + [ + [ + [-179.917369, -16.501783], + [-180, -16.555217], + [-180, -16.067133], + [-179.79332, -16.020882], + [-179.917369, -16.501783] + ] + ] + ] + }, + "type": "Feature", + "id": "FJI", + "properties": { "name": "Fiji", "id": "FJI", "centroid": [178.3, -18.06] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-61.2, -51.85], + [-60, -51.25], + [-59.15, -51.5], + [-58.55, -51.1], + [-57.75, -51.55], + [-58.05, -51.9], + [-59.4, -52.2], + [-59.85, -51.85], + [-60.7, -52.3], + [-61.2, -51.85] + ] + ] + }, + "type": "Feature", + "id": "FLK", + "properties": { "name": "Falkland Islands", "id": "FLK", "centroid": null } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [9.560016, 42.152492], + [9.229752, 41.380007], + [8.775723, 41.583612], + [8.544213, 42.256517], + [8.746009, 42.628122], + [9.390001, 43.009985], + [9.560016, 42.152492] + ] + ], + [ + [ + [3.588184, 50.378992], + [4.286023, 49.907497], + [4.799222, 49.985373], + [5.674052, 49.529484], + [5.897759, 49.442667], + [6.18632, 49.463803], + [6.65823, 49.201958], + [8.099279, 49.017784], + [7.593676, 48.333019], + [7.466759, 47.620582], + [7.192202, 47.449766], + [6.736571, 47.541801], + [6.768714, 47.287708], + [6.037389, 46.725779], + [6.022609, 46.27299], + [6.5001, 46.429673], + [6.843593, 45.991147], + [6.802355, 45.70858], + [7.096652, 45.333099], + [6.749955, 45.028518], + [7.007562, 44.254767], + [7.549596, 44.127901], + [7.435185, 43.693845], + [6.529245, 43.128892], + [4.556963, 43.399651], + [3.100411, 43.075201], + [2.985999, 42.473015], + [1.826793, 42.343385], + [0.701591, 42.795734], + [0.338047, 42.579546], + [-1.502771, 43.034014], + [-1.901351, 43.422802], + [-1.384225, 44.02261], + [-1.193798, 46.014918], + [-2.225724, 47.064363], + [-2.963276, 47.570327], + [-4.491555, 47.954954], + [-4.59235, 48.68416], + [-3.295814, 48.901692], + [-1.616511, 48.644421], + [-1.933494, 49.776342], + [-0.989469, 49.347376], + [1.338761, 50.127173], + [1.639001, 50.946606], + [2.513573, 51.148506], + [2.658422, 50.796848], + [3.123252, 50.780363], + [3.588184, 50.378992] + ] + ] + ] + }, + "type": "Feature", + "id": "FRA", + "properties": { "name": "France", "id": "FRA", "centroid": [2.2, 48.5] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [11.093773, -3.978827], + [10.066135, -2.969483], + [9.405245, -2.144313], + [8.797996, -1.111301], + [8.830087, -0.779074], + [9.04842, -0.459351], + [9.291351, 0.268666], + [9.492889, 1.01012], + [9.830284, 1.067894], + [11.285079, 1.057662], + [11.276449, 2.261051], + [11.751665, 2.326758], + [12.35938, 2.192812], + [12.951334, 2.321616], + [13.075822, 2.267097], + [13.003114, 1.830896], + [13.282631, 1.314184], + [14.026669, 1.395677], + [14.276266, 1.19693], + [13.843321, 0.038758], + [14.316418, -0.552627], + [14.425456, -1.333407], + [14.29921, -1.998276], + [13.992407, -2.470805], + [13.109619, -2.42874], + [12.575284, -1.948511], + [12.495703, -2.391688], + [11.820964, -2.514161], + [11.478039, -2.765619], + [11.855122, -3.426871], + [11.093773, -3.978827] + ] + ] + }, + "type": "Feature", + "id": "GAB", + "properties": { "name": "Gabon", "id": "GAB", "centroid": [9.26, 0.25] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-5.661949, 54.554603], + [-6.197885, 53.867565], + [-6.95373, 54.073702], + [-7.572168, 54.059956], + [-7.366031, 54.595841], + [-7.572168, 55.131622], + [-6.733847, 55.17286], + [-5.661949, 54.554603] + ] + ], + [ + [ + [-3.005005, 58.635], + [-4.073828, 57.553025], + [-3.055002, 57.690019], + [-1.959281, 57.6848], + [-2.219988, 56.870017], + [-3.119003, 55.973793], + [-2.085009, 55.909998], + [-2.005676, 55.804903], + [-1.114991, 54.624986], + [-0.430485, 54.464376], + [0.184981, 53.325014], + [0.469977, 52.929999], + [1.681531, 52.73952], + [1.559988, 52.099998], + [1.050562, 51.806761], + [1.449865, 51.289428], + [0.550334, 50.765739], + [-0.787517, 50.774989], + [-2.489998, 50.500019], + [-2.956274, 50.69688], + [-3.617448, 50.228356], + [-4.542508, 50.341837], + [-5.245023, 49.96], + [-5.776567, 50.159678], + [-4.30999, 51.210001], + [-3.414851, 51.426009], + [-3.422719, 51.426848], + [-4.984367, 51.593466], + [-5.267296, 51.9914], + [-4.222347, 52.301356], + [-4.770013, 52.840005], + [-4.579999, 53.495004], + [-3.093831, 53.404547], + [-3.09208, 53.404441], + [-2.945009, 53.985], + [-3.614701, 54.600937], + [-3.630005, 54.615013], + [-4.844169, 54.790971], + [-5.082527, 55.061601], + [-4.719112, 55.508473], + [-5.047981, 55.783986], + [-5.586398, 55.311146], + [-5.644999, 56.275015], + [-6.149981, 56.78501], + [-5.786825, 57.818848], + [-5.009999, 58.630013], + [-4.211495, 58.550845], + [-3.005005, 58.635] + ] + ] + ] + }, + "type": "Feature", + "id": "GBR", + "properties": { "name": "United Kingdom", "id": "GBR", "centroid": [-0.05, 51.36] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [41.554084, 41.535656], + [41.703171, 41.962943], + [41.45347, 42.645123], + [40.875469, 43.013628], + [40.321394, 43.128634], + [39.955009, 43.434998], + [40.076965, 43.553104], + [40.922185, 43.382159], + [42.394395, 43.220308], + [43.756017, 42.740828], + [43.9312, 42.554974], + [44.537623, 42.711993], + [45.470279, 42.502781], + [45.77641, 42.092444], + [46.404951, 41.860675], + [46.145432, 41.722802], + [46.637908, 41.181673], + [46.501637, 41.064445], + [45.962601, 41.123873], + [45.217426, 41.411452], + [44.97248, 41.248129], + [43.582746, 41.092143], + [42.619549, 41.583173], + [41.554084, 41.535656] + ] + ] + }, + "type": "Feature", + "id": "GEO", + "properties": { "name": "Georgia", "id": "GEO", "centroid": [44.5, 41.43] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [1.060122, 5.928837], + [-0.507638, 5.343473], + [-1.063625, 5.000548], + [-1.964707, 4.710462], + [-2.856125, 4.994476], + [-2.810701, 5.389051], + [-3.24437, 6.250472], + [-2.983585, 7.379705], + [-2.56219, 8.219628], + [-2.827496, 9.642461], + [-2.963896, 10.395335], + [-2.940409, 10.96269], + [-1.203358, 11.009819], + [-0.761576, 10.93693], + [-0.438702, 11.098341], + [0.023803, 11.018682], + [-0.049785, 10.706918], + [0.36758, 10.191213], + [0.365901, 9.465004], + [0.461192, 8.677223], + [0.712029, 8.312465], + [0.490957, 7.411744], + [0.570384, 6.914359], + [0.836931, 6.279979], + [1.060122, 5.928837] + ] + ] + }, + "type": "Feature", + "id": "GHA", + "properties": { "name": "Ghana", "id": "GHA", "centroid": [-0.06, 5.35] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-8.439298, 7.686043], + [-8.722124, 7.711674], + [-8.926065, 7.309037], + [-9.208786, 7.313921], + [-9.403348, 7.526905], + [-9.33728, 7.928534], + [-9.755342, 8.541055], + [-10.016567, 8.428504], + [-10.230094, 8.406206], + [-10.505477, 8.348896], + [-10.494315, 8.715541], + [-10.65477, 8.977178], + [-10.622395, 9.26791], + [-10.839152, 9.688246], + [-11.117481, 10.045873], + [-11.917277, 10.046984], + [-12.150338, 9.858572], + [-12.425929, 9.835834], + [-12.596719, 9.620188], + [-12.711958, 9.342712], + [-13.24655, 8.903049], + [-13.685154, 9.494744], + [-14.074045, 9.886167], + [-14.330076, 10.01572], + [-14.579699, 10.214467], + [-14.693232, 10.656301], + [-14.839554, 10.876572], + [-15.130311, 11.040412], + [-14.685687, 11.527824], + [-14.382192, 11.509272], + [-14.121406, 11.677117], + [-13.9008, 11.678719], + [-13.743161, 11.811269], + [-13.828272, 12.142644], + [-13.718744, 12.247186], + [-13.700476, 12.586183], + [-13.217818, 12.575874], + [-12.499051, 12.33209], + [-12.278599, 12.35444], + [-12.203565, 12.465648], + [-11.658301, 12.386583], + [-11.513943, 12.442988], + [-11.456169, 12.076834], + [-11.297574, 12.077971], + [-11.036556, 12.211245], + [-10.87083, 12.177887], + [-10.593224, 11.923975], + [-10.165214, 11.844084], + [-9.890993, 12.060479], + [-9.567912, 12.194243], + [-9.327616, 12.334286], + [-9.127474, 12.30806], + [-8.905265, 12.088358], + [-8.786099, 11.812561], + [-8.376305, 11.393646], + [-8.581305, 11.136246], + [-8.620321, 10.810891], + [-8.407311, 10.909257], + [-8.282357, 10.792597], + [-8.335377, 10.494812], + [-8.029944, 10.206535], + [-8.229337, 10.12902], + [-8.309616, 9.789532], + [-8.079114, 9.376224], + [-7.8321, 8.575704], + [-8.203499, 8.455453], + [-8.299049, 8.316444], + [-8.221792, 8.123329], + [-8.280703, 7.68718], + [-8.439298, 7.686043] + ] + ] + }, + "type": "Feature", + "id": "GIN", + "properties": { "name": "Guinea", "id": "GIN", "centroid": [-13.49, 9.29] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-16.841525, 13.151394], + [-16.713729, 13.594959], + [-15.624596, 13.623587], + [-15.39877, 13.860369], + [-15.081735, 13.876492], + [-14.687031, 13.630357], + [-14.376714, 13.62568], + [-14.046992, 13.794068], + [-13.844963, 13.505042], + [-14.277702, 13.280585], + [-14.712197, 13.298207], + [-15.141163, 13.509512], + [-15.511813, 13.27857], + [-15.691001, 13.270353], + [-15.931296, 13.130284], + [-16.841525, 13.151394] + ] + ] + }, + "type": "Feature", + "id": "GMB", + "properties": { "name": "Gambia", "id": "GMB", "centroid": [-16.4, 13.28] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-15.130311, 11.040412], + [-15.66418, 11.458474], + [-16.085214, 11.524594], + [-16.314787, 11.806515], + [-16.308947, 11.958702], + [-16.613838, 12.170911], + [-16.677452, 12.384852], + [-16.147717, 12.547762], + [-15.816574, 12.515567], + [-15.548477, 12.62817], + [-13.700476, 12.586183], + [-13.718744, 12.247186], + [-13.828272, 12.142644], + [-13.743161, 11.811269], + [-13.9008, 11.678719], + [-14.121406, 11.677117], + [-14.382192, 11.509272], + [-14.685687, 11.527824], + [-15.130311, 11.040412] + ] + ] + }, + "type": "Feature", + "id": "GNB", + "properties": { "name": "Guinea Bissau", "id": "GNB", "centroid": [-15.45, 11.45] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [9.492889, 1.01012], + [9.305613, 1.160911], + [9.649158, 2.283866], + [11.276449, 2.261051], + [11.285079, 1.057662], + [9.830284, 1.067894], + [9.492889, 1.01012] + ] + ] + }, + "type": "Feature", + "id": "GNQ", + "properties": { "name": "Equatorial Guinea", "id": "GNQ", "centroid": [8.5, 3.45] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [23.69998, 35.705004], + [24.246665, 35.368022], + [25.025015, 35.424996], + [25.769208, 35.354018], + [25.745023, 35.179998], + [26.290003, 35.29999], + [26.164998, 35.004995], + [24.724982, 34.919988], + [24.735007, 35.084991], + [23.514978, 35.279992], + [23.69998, 35.705004] + ] + ], + [ + [ + [26.604196, 41.562115], + [26.294602, 40.936261], + [26.056942, 40.824123], + [25.447677, 40.852545], + [24.925848, 40.947062], + [23.714811, 40.687129], + [24.407999, 40.124993], + [23.899968, 39.962006], + [23.342999, 39.960998], + [22.813988, 40.476005], + [22.626299, 40.256561], + [22.849748, 39.659311], + [23.350027, 39.190011], + [22.973099, 38.970903], + [23.530016, 38.510001], + [24.025025, 38.219993], + [24.040011, 37.655015], + [23.115003, 37.920011], + [23.409972, 37.409991], + [22.774972, 37.30501], + [23.154225, 36.422506], + [22.490028, 36.41], + [21.670026, 36.844986], + [21.295011, 37.644989], + [21.120034, 38.310323], + [20.730032, 38.769985], + [20.217712, 39.340235], + [20.150016, 39.624998], + [20.615, 40.110007], + [20.674997, 40.435], + [20.99999, 40.580004], + [21.02004, 40.842727], + [21.674161, 40.931275], + [22.055378, 41.149866], + [22.597308, 41.130487], + [22.76177, 41.3048], + [22.952377, 41.337994], + [23.692074, 41.309081], + [24.492645, 41.583896], + [25.197201, 41.234486], + [26.106138, 41.328899], + [26.117042, 41.826905], + [26.604196, 41.562115] + ] + ] + ] + }, + "type": "Feature", + "id": "GRC", + "properties": { "name": "Greece", "id": "GRC", "centroid": [23.46, 37.58] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-46.76379, 82.62796], + [-43.40644, 83.22516], + [-39.89753, 83.18018], + [-38.62214, 83.54905], + [-35.08787, 83.64513], + [-27.10046, 83.51966], + [-20.84539, 82.72669], + [-22.69182, 82.34165], + [-26.51753, 82.29765], + [-31.9, 82.2], + [-31.39646, 82.02154], + [-27.85666, 82.13178], + [-24.84448, 81.78697], + [-22.90328, 82.09317], + [-22.07175, 81.73449], + [-23.16961, 81.15271], + [-20.62363, 81.52462], + [-15.76818, 81.91245], + [-12.77018, 81.71885], + [-12.20855, 81.29154], + [-16.28533, 80.58004], + [-16.85, 80.35], + [-20.04624, 80.17708], + [-17.73035, 80.12912], + [-18.9, 79.4], + [-19.70499, 78.75128], + [-19.67353, 77.63859], + [-18.47285, 76.98565], + [-20.03503, 76.94434], + [-21.67944, 76.62795], + [-19.83407, 76.09808], + [-19.59896, 75.24838], + [-20.66818, 75.15585], + [-19.37281, 74.29561], + [-21.59422, 74.22382], + [-20.43454, 73.81713], + [-20.76234, 73.46436], + [-22.17221, 73.30955], + [-23.56593, 73.30663], + [-22.31311, 72.62928], + [-22.29954, 72.18409], + [-24.27834, 72.59788], + [-24.79296, 72.3302], + [-23.44296, 72.08016], + [-22.13281, 71.46898], + [-21.75356, 70.66369], + [-23.53603, 70.471], + [-24.30702, 70.85649], + [-25.54341, 71.43094], + [-25.20135, 70.75226], + [-26.36276, 70.22646], + [-23.72742, 70.18401], + [-22.34902, 70.12946], + [-25.02927, 69.2588], + [-27.74737, 68.47046], + [-30.67371, 68.12503], + [-31.77665, 68.12078], + [-32.81105, 67.73547], + [-34.20196, 66.67974], + [-36.35284, 65.9789], + [-37.04378, 65.93768], + [-38.37505, 65.69213], + [-39.81222, 65.45848], + [-40.66899, 64.83997], + [-40.68281, 64.13902], + [-41.1887, 63.48246], + [-42.81938, 62.68233], + [-42.41666, 61.90093], + [-42.86619, 61.07404], + [-43.3784, 60.09772], + [-44.7875, 60.03676], + [-46.26364, 60.85328], + [-48.26294, 60.85843], + [-49.23308, 61.40681], + [-49.90039, 62.38336], + [-51.63325, 63.62691], + [-52.14014, 64.27842], + [-52.27659, 65.1767], + [-53.66166, 66.09957], + [-53.30161, 66.8365], + [-53.96911, 67.18899], + [-52.9804, 68.35759], + [-51.47536, 68.72958], + [-51.08041, 69.14781], + [-50.87122, 69.9291], + [-52.013585, 69.574925], + [-52.55792, 69.42616], + [-53.45629, 69.283625], + [-54.68336, 69.61003], + [-54.75001, 70.28932], + [-54.35884, 70.821315], + [-53.431315, 70.835755], + [-51.39014, 70.56978], + [-53.10937, 71.20485], + [-54.00422, 71.54719], + [-55, 71.406537], + [-55.83468, 71.65444], + [-54.71819, 72.58625], + [-55.32634, 72.95861], + [-56.12003, 73.64977], + [-57.32363, 74.71026], + [-58.59679, 75.09861], + [-58.58516, 75.51727], + [-61.26861, 76.10238], + [-63.39165, 76.1752], + [-66.06427, 76.13486], + [-68.50438, 76.06141], + [-69.66485, 76.37975], + [-71.40257, 77.00857], + [-68.77671, 77.32312], + [-66.76397, 77.37595], + [-71.04293, 77.63595], + [-73.297, 78.04419], + [-73.15938, 78.43271], + [-69.37345, 78.91388], + [-65.7107, 79.39436], + [-65.3239, 79.75814], + [-68.02298, 80.11721], + [-67.15129, 80.51582], + [-63.68925, 81.21396], + [-62.23444, 81.3211], + [-62.65116, 81.77042], + [-60.28249, 82.03363], + [-57.20744, 82.19074], + [-54.13442, 82.19962], + [-53.04328, 81.88833], + [-50.39061, 82.43883], + [-48.00386, 82.06481], + [-46.59984, 81.985945], + [-44.523, 81.6607], + [-46.9007, 82.19979], + [-46.76379, 82.62796] + ] + ] + }, + "type": "Feature", + "id": "GRL", + "properties": { "name": "Greenland", "id": "GRL", "centroid": null } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-90.095555, 13.735338], + [-90.608624, 13.909771], + [-91.23241, 13.927832], + [-91.689747, 14.126218], + [-92.22775, 14.538829], + [-92.20323, 14.830103], + [-92.087216, 15.064585], + [-92.229249, 15.251447], + [-91.74796, 16.066565], + [-90.464473, 16.069562], + [-90.438867, 16.41011], + [-90.600847, 16.470778], + [-90.711822, 16.687483], + [-91.08167, 16.918477], + [-91.453921, 17.252177], + [-91.002269, 17.254658], + [-91.00152, 17.817595], + [-90.067934, 17.819326], + [-89.14308, 17.808319], + [-89.150806, 17.015577], + [-89.229122, 15.886938], + [-88.930613, 15.887273], + [-88.604586, 15.70638], + [-88.518364, 15.855389], + [-88.225023, 15.727722], + [-88.68068, 15.346247], + [-89.154811, 15.066419], + [-89.22522, 14.874286], + [-89.145535, 14.678019], + [-89.353326, 14.424133], + [-89.587343, 14.362586], + [-89.534219, 14.244816], + [-89.721934, 14.134228], + [-90.064678, 13.88197], + [-90.095555, 13.735338] + ] + ] + }, + "type": "Feature", + "id": "GTM", + "properties": { "name": "Guatemala", "id": "GTM", "centroid": [-90.22, 14.4] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-52.556425, 2.504705], + [-52.939657, 2.124858], + [-53.418465, 2.053389], + [-53.554839, 2.334897], + [-53.778521, 2.376703], + [-54.088063, 2.105557], + [-54.524754, 2.311849], + [-54.27123, 2.738748], + [-54.184284, 3.194172], + [-54.011504, 3.62257], + [-54.399542, 4.212611], + [-54.478633, 4.896756], + [-53.958045, 5.756548], + [-53.618453, 5.646529], + [-52.882141, 5.409851], + [-51.823343, 4.565768], + [-51.657797, 4.156232], + [-52.249338, 3.241094], + [-52.556425, 2.504705] + ] + ] + }, + "type": "Feature", + "id": "GUF", + "properties": { "name": "French Guiana", "id": "GUF", "centroid": [-52.18, 5.05] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-59.758285, 8.367035], + [-59.101684, 7.999202], + [-58.482962, 7.347691], + [-58.454876, 6.832787], + [-58.078103, 6.809094], + [-57.542219, 6.321268], + [-57.147436, 5.97315], + [-57.307246, 5.073567], + [-57.914289, 4.812626], + [-57.86021, 4.576801], + [-58.044694, 4.060864], + [-57.601569, 3.334655], + [-57.281433, 3.333492], + [-57.150098, 2.768927], + [-56.539386, 1.899523], + [-56.782704, 1.863711], + [-57.335823, 1.948538], + [-57.660971, 1.682585], + [-58.11345, 1.507195], + [-58.429477, 1.463942], + [-58.540013, 1.268088], + [-59.030862, 1.317698], + [-59.646044, 1.786894], + [-59.718546, 2.24963], + [-59.974525, 2.755233], + [-59.815413, 3.606499], + [-59.53804, 3.958803], + [-59.767406, 4.423503], + [-60.111002, 4.574967], + [-59.980959, 5.014061], + [-60.213683, 5.244486], + [-60.733574, 5.200277], + [-61.410303, 5.959068], + [-61.139415, 6.234297], + [-61.159336, 6.696077], + [-60.543999, 6.856584], + [-60.295668, 7.043911], + [-60.637973, 7.415], + [-60.550588, 7.779603], + [-59.758285, 8.367035] + ] + ] + }, + "type": "Feature", + "id": "GUY", + "properties": { "name": "Guyana", "id": "GUY", "centroid": [-58.12, 6.5] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-87.316654, 12.984686], + [-87.489409, 13.297535], + [-87.793111, 13.38448], + [-87.723503, 13.78505], + [-87.859515, 13.893312], + [-88.065343, 13.964626], + [-88.503998, 13.845486], + [-88.541231, 13.980155], + [-88.843073, 14.140507], + [-89.058512, 14.340029], + [-89.353326, 14.424133], + [-89.145535, 14.678019], + [-89.22522, 14.874286], + [-89.154811, 15.066419], + [-88.68068, 15.346247], + [-88.225023, 15.727722], + [-88.121153, 15.688655], + [-87.901813, 15.864458], + [-87.61568, 15.878799], + [-87.522921, 15.797279], + [-87.367762, 15.84694], + [-86.903191, 15.756713], + [-86.440946, 15.782835], + [-86.119234, 15.893449], + [-86.001954, 16.005406], + [-85.683317, 15.953652], + [-85.444004, 15.885749], + [-85.182444, 15.909158], + [-84.983722, 15.995923], + [-84.52698, 15.857224], + [-84.368256, 15.835158], + [-84.063055, 15.648244], + [-83.773977, 15.424072], + [-83.410381, 15.270903], + [-83.147219, 14.995829], + [-83.489989, 15.016267], + [-83.628585, 14.880074], + [-83.975721, 14.749436], + [-84.228342, 14.748764], + [-84.449336, 14.621614], + [-84.649582, 14.666805], + [-84.820037, 14.819587], + [-84.924501, 14.790493], + [-85.052787, 14.551541], + [-85.148751, 14.560197], + [-85.165365, 14.35437], + [-85.514413, 14.079012], + [-85.698665, 13.960078], + [-85.801295, 13.836055], + [-86.096264, 14.038187], + [-86.312142, 13.771356], + [-86.520708, 13.778487], + [-86.755087, 13.754845], + [-86.733822, 13.263093], + [-86.880557, 13.254204], + [-87.005769, 13.025794], + [-87.316654, 12.984686] + ] + ] + }, + "type": "Feature", + "id": "HND", + "properties": { "name": "Honduras", "id": "HND", "centroid": [-87.14, 14.05] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [18.829838, 45.908878], + [19.072769, 45.521511], + [19.390476, 45.236516], + [19.005486, 44.860234], + [18.553214, 45.08159], + [17.861783, 45.06774], + [17.002146, 45.233777], + [16.534939, 45.211608], + [16.318157, 45.004127], + [15.959367, 45.233777], + [15.750026, 44.818712], + [16.23966, 44.351143], + [16.456443, 44.04124], + [16.916156, 43.667722], + [17.297373, 43.446341], + [17.674922, 43.028563], + [18.56, 42.65], + [18.450016, 42.479991], + [17.50997, 42.849995], + [16.930006, 43.209998], + [16.015385, 43.507215], + [15.174454, 44.243191], + [15.37625, 44.317915], + [14.920309, 44.738484], + [14.901602, 45.07606], + [14.258748, 45.233777], + [13.952255, 44.802124], + [13.656976, 45.136935], + [13.679403, 45.484149], + [13.71506, 45.500324], + [14.411968, 45.466166], + [14.595109, 45.634941], + [14.935244, 45.471695], + [15.327675, 45.452316], + [15.323954, 45.731783], + [15.67153, 45.834154], + [15.768733, 46.238108], + [16.564808, 46.503751], + [16.882515, 46.380632], + [17.630066, 45.951769], + [18.456062, 45.759481], + [18.829838, 45.908878] + ] + ] + }, + "type": "Feature", + "id": "HRV", + "properties": { "name": "Croatia", "id": "HRV", "centroid": [15.58, 45.5] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-73.189791, 19.915684], + [-72.579673, 19.871501], + [-71.712361, 19.714456], + [-71.624873, 19.169838], + [-71.701303, 18.785417], + [-71.945112, 18.6169], + [-71.687738, 18.31666], + [-71.708305, 18.044997], + [-72.372476, 18.214961], + [-72.844411, 18.145611], + [-73.454555, 18.217906], + [-73.922433, 18.030993], + [-74.458034, 18.34255], + [-74.369925, 18.664908], + [-73.449542, 18.526053], + [-72.694937, 18.445799], + [-72.334882, 18.668422], + [-72.79165, 19.101625], + [-72.784105, 19.483591], + [-73.415022, 19.639551], + [-73.189791, 19.915684] + ] + ] + }, + "type": "Feature", + "id": "HTI", + "properties": { "name": "Haiti", "id": "HTI", "centroid": [-72.2, 18.4] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [16.202298, 46.852386], + [16.534268, 47.496171], + [16.340584, 47.712902], + [16.903754, 47.714866], + [16.979667, 48.123497], + [17.488473, 47.867466], + [17.857133, 47.758429], + [18.696513, 47.880954], + [18.777025, 48.081768], + [19.174365, 48.111379], + [19.661364, 48.266615], + [19.769471, 48.202691], + [20.239054, 48.327567], + [20.473562, 48.56285], + [20.801294, 48.623854], + [21.872236, 48.319971], + [22.085608, 48.422264], + [22.64082, 48.15024], + [22.710531, 47.882194], + [22.099768, 47.672439], + [21.626515, 46.994238], + [21.021952, 46.316088], + [20.220192, 46.127469], + [19.596045, 46.17173], + [18.829838, 45.908878], + [18.456062, 45.759481], + [17.630066, 45.951769], + [16.882515, 46.380632], + [16.564808, 46.503751], + [16.370505, 46.841327], + [16.202298, 46.852386] + ] + ] + }, + "type": "Feature", + "id": "HUN", + "properties": { "name": "Hungary", "id": "HUN", "centroid": [19.05, 47.29] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [120.715609, -10.239581], + [120.295014, -10.25865], + [118.967808, -9.557969], + [119.90031, -9.36134], + [120.425756, -9.665921], + [120.775502, -9.969675], + [120.715609, -10.239581] + ] + ], + [ + [ + [124.43595, -10.140001], + [123.579982, -10.359987], + [123.459989, -10.239995], + [123.550009, -9.900016], + [123.980009, -9.290027], + [124.968682, -8.89279], + [125.07002, -9.089987], + [125.08852, -9.393173], + [124.43595, -10.140001] + ] + ], + [ + [ + [117.900018, -8.095681], + [118.260616, -8.362383], + [118.87846, -8.280683], + [119.126507, -8.705825], + [117.970402, -8.906639], + [117.277731, -9.040895], + [116.740141, -9.032937], + [117.083737, -8.457158], + [117.632024, -8.449303], + [117.900018, -8.095681] + ] + ], + [ + [ + [122.903537, -8.094234], + [122.756983, -8.649808], + [121.254491, -8.933666], + [119.924391, -8.810418], + [119.920929, -8.444859], + [120.715092, -8.236965], + [121.341669, -8.53674], + [122.007365, -8.46062], + [122.903537, -8.094234] + ] + ], + [ + [ + [108.623479, -6.777674], + [110.539227, -6.877358], + [110.759576, -6.465186], + [112.614811, -6.946036], + [112.978768, -7.594213], + [114.478935, -7.776528], + [115.705527, -8.370807], + [114.564511, -8.751817], + [113.464734, -8.348947], + [112.559672, -8.376181], + [111.522061, -8.302129], + [110.58615, -8.122605], + [109.427667, -7.740664], + [108.693655, -7.6416], + [108.277763, -7.766657], + [106.454102, -7.3549], + [106.280624, -6.9249], + [105.365486, -6.851416], + [106.051646, -5.895919], + [107.265009, -5.954985], + [108.072091, -6.345762], + [108.486846, -6.421985], + [108.623479, -6.777674] + ] + ], + [ + [ + [134.724624, -6.214401], + [134.210134, -6.895238], + [134.112776, -6.142467], + [134.290336, -5.783058], + [134.499625, -5.445042], + [134.727002, -5.737582], + [134.724624, -6.214401] + ] + ], + [ + [ + [127.249215, -3.459065], + [126.874923, -3.790983], + [126.183802, -3.607376], + [125.989034, -3.177273], + [127.000651, -3.129318], + [127.249215, -3.459065] + ] + ], + [ + [ + [130.471344, -3.093764], + [130.834836, -3.858472], + [129.990547, -3.446301], + [129.155249, -3.362637], + [128.590684, -3.428679], + [127.898891, -3.393436], + [128.135879, -2.84365], + [129.370998, -2.802154], + [130.471344, -3.093764] + ] + ], + [ + [ + [134.143368, -1.151867], + [134.422627, -2.769185], + [135.457603, -3.367753], + [136.293314, -2.307042], + [137.440738, -1.703513], + [138.329727, -1.702686], + [139.184921, -2.051296], + [139.926684, -2.409052], + [141.00021, -2.600151], + [141.017057, -5.859022], + [141.033852, -9.117893], + [140.143415, -8.297168], + [139.127767, -8.096043], + [138.881477, -8.380935], + [137.614474, -8.411683], + [138.039099, -7.597882], + [138.668621, -7.320225], + [138.407914, -6.232849], + [137.92784, -5.393366], + [135.98925, -4.546544], + [135.164598, -4.462931], + [133.66288, -3.538853], + [133.367705, -4.024819], + [132.983956, -4.112979], + [132.756941, -3.746283], + [132.753789, -3.311787], + [131.989804, -2.820551], + [133.066845, -2.460418], + [133.780031, -2.479848], + [133.696212, -2.214542], + [132.232373, -2.212526], + [131.836222, -1.617162], + [130.94284, -1.432522], + [130.519558, -0.93772], + [131.867538, -0.695461], + [132.380116, -0.369538], + [133.985548, -0.78021], + [134.143368, -1.151867] + ] + ], + [ + [ + [125.240501, 1.419836], + [124.437035, 0.427881], + [123.685505, 0.235593], + [122.723083, 0.431137], + [121.056725, 0.381217], + [120.183083, 0.237247], + [120.04087, -0.519658], + [120.935905, -1.408906], + [121.475821, -0.955962], + [123.340565, -0.615673], + [123.258399, -1.076213], + [122.822715, -0.930951], + [122.38853, -1.516858], + [121.508274, -1.904483], + [122.454572, -3.186058], + [122.271896, -3.5295], + [123.170963, -4.683693], + [123.162333, -5.340604], + [122.628515, -5.634591], + [122.236394, -5.282933], + [122.719569, -4.464172], + [121.738234, -4.851331], + [121.489463, -4.574553], + [121.619171, -4.188478], + [120.898182, -3.602105], + [120.972389, -2.627643], + [120.305453, -2.931604], + [120.390047, -4.097579], + [120.430717, -5.528241], + [119.796543, -5.6734], + [119.366906, -5.379878], + [119.653606, -4.459417], + [119.498835, -3.494412], + [119.078344, -3.487022], + [118.767769, -2.801999], + [119.180974, -2.147104], + [119.323394, -1.353147], + [119.825999, 0.154254], + [120.035702, 0.566477], + [120.885779, 1.309223], + [121.666817, 1.013944], + [122.927567, 0.875192], + [124.077522, 0.917102], + [125.065989, 1.643259], + [125.240501, 1.419836] + ] + ], + [ + [ + [128.688249, 1.132386], + [128.635952, 0.258486], + [128.12017, 0.356413], + [127.968034, -0.252077], + [128.379999, -0.780004], + [128.100016, -0.899996], + [127.696475, -0.266598], + [127.39949, 1.011722], + [127.600512, 1.810691], + [127.932378, 2.174596], + [128.004156, 1.628531], + [128.594559, 1.540811], + [128.688249, 1.132386] + ] + ], + [ + [ + [117.875627, 1.827641], + [118.996747, 0.902219], + [117.811858, 0.784242], + [117.478339, 0.102475], + [117.521644, -0.803723], + [116.560048, -1.487661], + [116.533797, -2.483517], + [116.148084, -4.012726], + [116.000858, -3.657037], + [114.864803, -4.106984], + [114.468652, -3.495704], + [113.755672, -3.43917], + [113.256994, -3.118776], + [112.068126, -3.478392], + [111.703291, -2.994442], + [111.04824, -3.049426], + [110.223846, -2.934032], + [110.070936, -1.592874], + [109.571948, -1.314907], + [109.091874, -0.459507], + [108.952658, 0.415375], + [109.069136, 1.341934], + [109.66326, 2.006467], + [109.830227, 1.338136], + [110.514061, 0.773131], + [111.159138, 0.976478], + [111.797548, 0.904441], + [112.380252, 1.410121], + [112.859809, 1.49779], + [113.80585, 1.217549], + [114.621355, 1.430688], + [115.134037, 2.821482], + [115.519078, 3.169238], + [115.865517, 4.306559], + [117.015214, 4.306094], + [117.882035, 4.137551], + [117.313232, 3.234428], + [118.04833, 2.28769], + [117.875627, 1.827641] + ] + ], + [ + [ + [105.817655, -5.852356], + [104.710384, -5.873285], + [103.868213, -5.037315], + [102.584261, -4.220259], + [102.156173, -3.614146], + [101.399113, -2.799777], + [100.902503, -2.050262], + [100.141981, -0.650348], + [99.26374, 0.183142], + [98.970011, 1.042882], + [98.601351, 1.823507], + [97.699598, 2.453184], + [97.176942, 3.308791], + [96.424017, 3.86886], + [95.380876, 4.970782], + [95.293026, 5.479821], + [95.936863, 5.439513], + [97.484882, 5.246321], + [98.369169, 4.26837], + [99.142559, 3.59035], + [99.693998, 3.174329], + [100.641434, 2.099381], + [101.658012, 2.083697], + [102.498271, 1.3987], + [103.07684, 0.561361], + [103.838396, 0.104542], + [103.437645, -0.711946], + [104.010789, -1.059212], + [104.369991, -1.084843], + [104.53949, -1.782372], + [104.887893, -2.340425], + [105.622111, -2.428844], + [106.108593, -3.061777], + [105.857446, -4.305525], + [105.817655, -5.852356] + ] + ] + ] + }, + "type": "Feature", + "id": "IDN", + "properties": { "name": "Indonesia", "id": "IDN", "centroid": [106.49, -6.09] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [77.837451, 35.49401], + [78.912269, 34.321936], + [78.811086, 33.506198], + [79.208892, 32.994395], + [79.176129, 32.48378], + [78.458446, 32.618164], + [78.738894, 31.515906], + [79.721367, 30.882715], + [81.111256, 30.183481], + [80.476721, 29.729865], + [80.088425, 28.79447], + [81.057203, 28.416095], + [81.999987, 27.925479], + [83.304249, 27.364506], + [84.675018, 27.234901], + [85.251779, 26.726198], + [86.024393, 26.630985], + [87.227472, 26.397898], + [88.060238, 26.414615], + [88.174804, 26.810405], + [88.043133, 27.445819], + [88.120441, 27.876542], + [88.730326, 28.086865], + [88.814248, 27.299316], + [88.835643, 27.098966], + [89.744528, 26.719403], + [90.373275, 26.875724], + [91.217513, 26.808648], + [92.033484, 26.83831], + [93.746338, 27.108034], + [94.306641, 27.547242], + [95.767822, 28.139816], + [97.051989, 27.699059], + [97.133999, 27.083774], + [96.419366, 27.264589], + [95.124768, 26.573572], + [95.155153, 26.001307], + [94.603249, 25.162495], + [94.552658, 24.675238], + [94.106742, 23.850741], + [93.325188, 24.078556], + [93.286327, 23.043658], + [93.060294, 22.703111], + [93.166128, 22.27846], + [92.672721, 22.041239], + [92.146035, 23.627499], + [91.869928, 23.624346], + [91.706475, 22.985264], + [91.158963, 23.503527], + [91.46773, 24.072639], + [91.915093, 24.130414], + [92.376202, 24.976693], + [91.799596, 25.147432], + [90.872211, 25.132601], + [89.920693, 25.26975], + [89.832481, 25.965082], + [89.355094, 26.014407], + [88.563049, 26.446526], + [88.209789, 25.768066], + [88.931554, 25.238692], + [88.306373, 24.866079], + [88.084422, 24.501657], + [88.69994, 24.233715], + [88.52977, 23.631142], + [88.876312, 22.879146], + [89.031961, 22.055708], + [88.888766, 21.690588], + [88.208497, 21.703172], + [86.975704, 21.495562], + [87.033169, 20.743308], + [86.499351, 20.151638], + [85.060266, 19.478579], + [83.941006, 18.30201], + [83.189217, 17.671221], + [82.192792, 17.016636], + [82.191242, 16.556664], + [81.692719, 16.310219], + [80.791999, 15.951972], + [80.324896, 15.899185], + [80.025069, 15.136415], + [80.233274, 13.835771], + [80.286294, 13.006261], + [79.862547, 12.056215], + [79.857999, 10.357275], + [79.340512, 10.308854], + [78.885345, 9.546136], + [79.18972, 9.216544], + [78.277941, 8.933047], + [77.941165, 8.252959], + [77.539898, 7.965535], + [76.592979, 8.899276], + [76.130061, 10.29963], + [75.746467, 11.308251], + [75.396101, 11.781245], + [74.864816, 12.741936], + [74.616717, 13.992583], + [74.443859, 14.617222], + [73.534199, 15.990652], + [73.119909, 17.92857], + [72.820909, 19.208234], + [72.824475, 20.419503], + [72.630533, 21.356009], + [71.175273, 20.757441], + [70.470459, 20.877331], + [69.16413, 22.089298], + [69.644928, 22.450775], + [69.349597, 22.84318], + [68.176645, 23.691965], + [68.842599, 24.359134], + [71.04324, 24.356524], + [70.844699, 25.215102], + [70.282873, 25.722229], + [70.168927, 26.491872], + [69.514393, 26.940966], + [70.616496, 27.989196], + [71.777666, 27.91318], + [72.823752, 28.961592], + [73.450638, 29.976413], + [74.42138, 30.979815], + [74.405929, 31.692639], + [75.258642, 32.271105], + [74.451559, 32.7649], + [74.104294, 33.441473], + [73.749948, 34.317699], + [74.240203, 34.748887], + [75.757061, 34.504923], + [76.871722, 34.653544], + [77.837451, 35.49401] + ] + ] + }, + "type": "Feature", + "id": "IND", + "properties": { "name": "India", "id": "IND", "centroid": [77.13, 28.37] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-6.197885, 53.867565], + [-6.032985, 53.153164], + [-6.788857, 52.260118], + [-8.561617, 51.669301], + [-9.977086, 51.820455], + [-9.166283, 52.864629], + [-9.688525, 53.881363], + [-8.327987, 54.664519], + [-7.572168, 55.131622], + [-7.366031, 54.595841], + [-7.572168, 54.059956], + [-6.95373, 54.073702], + [-6.197885, 53.867565] + ] + ] + }, + "type": "Feature", + "id": "IRL", + "properties": { "name": "Ireland", "id": "IRL", "centroid": [-6.15, 53.21] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [53.921598, 37.198918], + [54.800304, 37.392421], + [55.511578, 37.964117], + [56.180375, 37.935127], + [56.619366, 38.121394], + [57.330434, 38.029229], + [58.436154, 37.522309], + [59.234762, 37.412988], + [60.377638, 36.527383], + [61.123071, 36.491597], + [61.210817, 35.650072], + [60.803193, 34.404102], + [60.52843, 33.676446], + [60.9637, 33.528832], + [60.536078, 32.981269], + [60.863655, 32.18292], + [60.941945, 31.548075], + [61.699314, 31.379506], + [61.781222, 30.73585], + [60.874248, 29.829239], + [61.369309, 29.303276], + [61.771868, 28.699334], + [62.72783, 28.259645], + [62.755426, 27.378923], + [63.233898, 27.217047], + [63.316632, 26.756532], + [61.874187, 26.239975], + [61.497363, 25.078237], + [59.616134, 25.380157], + [58.525761, 25.609962], + [57.397251, 25.739902], + [56.970766, 26.966106], + [56.492139, 27.143305], + [55.72371, 26.964633], + [54.71509, 26.480658], + [53.493097, 26.812369], + [52.483598, 27.580849], + [51.520763, 27.86569], + [50.852948, 28.814521], + [50.115009, 30.147773], + [49.57685, 29.985715], + [48.941333, 30.31709], + [48.567971, 29.926778], + [48.014568, 30.452457], + [48.004698, 30.985137], + [47.685286, 30.984853], + [47.849204, 31.709176], + [47.334661, 32.469155], + [46.109362, 33.017287], + [45.416691, 33.967798], + [45.64846, 34.748138], + [46.151788, 35.093259], + [46.07634, 35.677383], + [45.420618, 35.977546], + [44.77267, 37.17045], + [44.225756, 37.971584], + [44.421403, 38.281281], + [44.109225, 39.428136], + [44.79399, 39.713003], + [44.952688, 39.335765], + [45.457722, 38.874139], + [46.143623, 38.741201], + [46.50572, 38.770605], + [47.685079, 39.508364], + [48.060095, 39.582235], + [48.355529, 39.288765], + [48.010744, 38.794015], + [48.634375, 38.270378], + [48.883249, 38.320245], + [49.199612, 37.582874], + [50.147771, 37.374567], + [50.842354, 36.872814], + [52.264025, 36.700422], + [53.82579, 36.965031], + [53.921598, 37.198918] + ] + ] + }, + "type": "Feature", + "id": "IRN", + "properties": { "name": "Iran", "id": "IRN", "centroid": [51.25, 35.42] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [45.420618, 35.977546], + [46.07634, 35.677383], + [46.151788, 35.093259], + [45.64846, 34.748138], + [45.416691, 33.967798], + [46.109362, 33.017287], + [47.334661, 32.469155], + [47.849204, 31.709176], + [47.685286, 30.984853], + [48.004698, 30.985137], + [48.014568, 30.452457], + [48.567971, 29.926778], + [47.974519, 29.975819], + [47.302622, 30.05907], + [46.568713, 29.099025], + [44.709499, 29.178891], + [41.889981, 31.190009], + [40.399994, 31.889992], + [39.195468, 32.161009], + [38.792341, 33.378686], + [41.006159, 34.419372], + [41.383965, 35.628317], + [41.289707, 36.358815], + [41.837064, 36.605854], + [42.349591, 37.229873], + [42.779126, 37.385264], + [43.942259, 37.256228], + [44.293452, 37.001514], + [44.772699, 37.170445], + [45.420618, 35.977546] + ] + ] + }, + "type": "Feature", + "id": "IRQ", + "properties": { "name": "Iraq", "id": "IRQ", "centroid": [44.3, 33.2] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-14.508695, 66.455892], + [-14.739637, 65.808748], + [-13.609732, 65.126671], + [-14.909834, 64.364082], + [-17.794438, 63.678749], + [-18.656246, 63.496383], + [-19.972755, 63.643635], + [-22.762972, 63.960179], + [-21.778484, 64.402116], + [-23.955044, 64.89113], + [-22.184403, 65.084968], + [-22.227423, 65.378594], + [-24.326184, 65.611189], + [-23.650515, 66.262519], + [-22.134922, 66.410469], + [-20.576284, 65.732112], + [-19.056842, 66.276601], + [-17.798624, 65.993853], + [-16.167819, 66.526792], + [-14.508695, 66.455892] + ] + ] + }, + "type": "Feature", + "id": "ISL", + "properties": { "name": "Iceland", "id": "ISL", "centroid": [-21.57, 64.1] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [35.719918, 32.709192], + [35.545665, 32.393992], + [35.18393, 32.532511], + [34.974641, 31.866582], + [35.225892, 31.754341], + [34.970507, 31.616778], + [34.927408, 31.353435], + [35.397561, 31.489086], + [35.420918, 31.100066], + [34.922603, 29.501326], + [34.265433, 31.219361], + [34.556372, 31.548824], + [34.488107, 31.605539], + [34.752587, 32.072926], + [34.955417, 32.827376], + [35.098457, 33.080539], + [35.126053, 33.0909], + [35.460709, 33.08904], + [35.552797, 33.264275], + [35.821101, 33.277426], + [35.836397, 32.868123], + [35.700798, 32.716014], + [35.719918, 32.709192] + ] + ] + }, + "type": "Feature", + "id": "ISR", + "properties": { "name": "Israel", "id": "ISR", "centroid": [35.12, 31.47] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [15.520376, 38.231155], + [15.160243, 37.444046], + [15.309898, 37.134219], + [15.099988, 36.619987], + [14.335229, 36.996631], + [13.826733, 37.104531], + [12.431004, 37.61295], + [12.570944, 38.126381], + [13.741156, 38.034966], + [14.761249, 38.143874], + [15.520376, 38.231155] + ] + ], + [ + [ + [9.210012, 41.209991], + [9.809975, 40.500009], + [9.669519, 39.177376], + [9.214818, 39.240473], + [8.806936, 38.906618], + [8.428302, 39.171847], + [8.388253, 40.378311], + [8.159998, 40.950007], + [8.709991, 40.899984], + [9.210012, 41.209991] + ] + ], + [ + [ + [12.376485, 46.767559], + [13.806475, 46.509306], + [13.69811, 46.016778], + [13.93763, 45.591016], + [13.141606, 45.736692], + [12.328581, 45.381778], + [12.383875, 44.885374], + [12.261453, 44.600482], + [12.589237, 44.091366], + [13.526906, 43.587727], + [14.029821, 42.761008], + [15.14257, 41.95514], + [15.926191, 41.961315], + [16.169897, 41.740295], + [15.889346, 41.541082], + [16.785002, 41.179606], + [17.519169, 40.877143], + [18.376687, 40.355625], + [18.480247, 40.168866], + [18.293385, 39.810774], + [17.73838, 40.277671], + [16.869596, 40.442235], + [16.448743, 39.795401], + [17.17149, 39.4247], + [17.052841, 38.902871], + [16.635088, 38.843572], + [16.100961, 37.985899], + [15.684087, 37.908849], + [15.687963, 38.214593], + [15.891981, 38.750942], + [16.109332, 38.964547], + [15.718814, 39.544072], + [15.413613, 40.048357], + [14.998496, 40.172949], + [14.703268, 40.60455], + [14.060672, 40.786348], + [13.627985, 41.188287], + [12.888082, 41.25309], + [12.106683, 41.704535], + [11.191906, 42.355425], + [10.511948, 42.931463], + [10.200029, 43.920007], + [9.702488, 44.036279], + [8.888946, 44.366336], + [8.428561, 44.231228], + [7.850767, 43.767148], + [7.435185, 43.693845], + [7.549596, 44.127901], + [7.007562, 44.254767], + [6.749955, 45.028518], + [7.096652, 45.333099], + [6.802355, 45.70858], + [6.843593, 45.991147], + [7.273851, 45.776948], + [7.755992, 45.82449], + [8.31663, 46.163642], + [8.489952, 46.005151], + [8.966306, 46.036932], + [9.182882, 46.440215], + [9.922837, 46.314899], + [10.363378, 46.483571], + [10.442701, 46.893546], + [11.048556, 46.751359], + [11.164828, 46.941579], + [12.153088, 47.115393], + [12.376485, 46.767559] + ] + ] + ] + }, + "type": "Feature", + "id": "ITA", + "properties": { "name": "Italy", "id": "ITA", "centroid": [12.29, 41.54] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-77.569601, 18.490525], + [-76.896619, 18.400867], + [-76.365359, 18.160701], + [-76.199659, 17.886867], + [-76.902561, 17.868238], + [-77.206341, 17.701116], + [-77.766023, 17.861597], + [-78.337719, 18.225968], + [-78.217727, 18.454533], + [-77.797365, 18.524218], + [-77.569601, 18.490525] + ] + ] + }, + "type": "Feature", + "id": "JAM", + "properties": { "name": "Jamaica", "id": "JAM", "centroid": [-76.5, 18] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [35.545665, 32.393992], + [35.719918, 32.709192], + [36.834062, 32.312938], + [38.792341, 33.378686], + [39.195468, 32.161009], + [39.004886, 32.010217], + [37.002166, 31.508413], + [37.998849, 30.5085], + [37.66812, 30.338665], + [37.503582, 30.003776], + [36.740528, 29.865283], + [36.501214, 29.505254], + [36.068941, 29.197495], + [34.956037, 29.356555], + [34.922603, 29.501326], + [35.420918, 31.100066], + [35.397561, 31.489086], + [35.545252, 31.782505], + [35.545665, 32.393992] + ] + ] + }, + "type": "Feature", + "id": "JOR", + "properties": { "name": "Jordan", "id": "JOR", "centroid": [35.52, 31.57] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [134.638428, 34.149234], + [134.766379, 33.806335], + [134.203416, 33.201178], + [133.79295, 33.521985], + [133.280268, 33.28957], + [133.014858, 32.704567], + [132.363115, 32.989382], + [132.371176, 33.463642], + [132.924373, 34.060299], + [133.492968, 33.944621], + [133.904106, 34.364931], + [134.638428, 34.149234] + ] + ], + [ + [ + [140.976388, 37.142074], + [140.59977, 36.343983], + [140.774074, 35.842877], + [140.253279, 35.138114], + [138.975528, 34.6676], + [137.217599, 34.606286], + [135.792983, 33.464805], + [135.120983, 33.849071], + [135.079435, 34.596545], + [133.340316, 34.375938], + [132.156771, 33.904933], + [130.986145, 33.885761], + [132.000036, 33.149992], + [131.33279, 31.450355], + [130.686318, 31.029579], + [130.20242, 31.418238], + [130.447676, 32.319475], + [129.814692, 32.61031], + [129.408463, 33.296056], + [130.353935, 33.604151], + [130.878451, 34.232743], + [131.884229, 34.749714], + [132.617673, 35.433393], + [134.608301, 35.731618], + [135.677538, 35.527134], + [136.723831, 37.304984], + [137.390612, 36.827391], + [138.857602, 37.827485], + [139.426405, 38.215962], + [140.05479, 39.438807], + [139.883379, 40.563312], + [140.305783, 41.195005], + [141.368973, 41.37856], + [141.914263, 39.991616], + [141.884601, 39.180865], + [140.959489, 38.174001], + [140.976388, 37.142074] + ] + ], + [ + [ + [143.910162, 44.1741], + [144.613427, 43.960883], + [145.320825, 44.384733], + [145.543137, 43.262088], + [144.059662, 42.988358], + [143.18385, 41.995215], + [141.611491, 42.678791], + [141.067286, 41.584594], + [139.955106, 41.569556], + [139.817544, 42.563759], + [140.312087, 43.333273], + [141.380549, 43.388825], + [141.671952, 44.772125], + [141.967645, 45.551483], + [143.14287, 44.510358], + [143.910162, 44.1741] + ] + ] + ] + }, + "type": "Feature", + "id": "JPN", + "properties": { "name": "Japan", "id": "JPN", "centroid": [139.41, 35.41] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [70.962315, 42.266154], + [70.388965, 42.081308], + [69.070027, 41.384244], + [68.632483, 40.668681], + [68.259896, 40.662325], + [67.985856, 41.135991], + [66.714047, 41.168444], + [66.510649, 41.987644], + [66.023392, 41.994646], + [66.098012, 42.99766], + [64.900824, 43.728081], + [63.185787, 43.650075], + [62.0133, 43.504477], + [61.05832, 44.405817], + [60.239972, 44.784037], + [58.689989, 45.500014], + [58.503127, 45.586804], + [55.928917, 44.995858], + [55.968191, 41.308642], + [55.455251, 41.259859], + [54.755345, 42.043971], + [54.079418, 42.324109], + [52.944293, 42.116034], + [52.50246, 41.783316], + [52.446339, 42.027151], + [52.692112, 42.443895], + [52.501426, 42.792298], + [51.342427, 43.132975], + [50.891292, 44.031034], + [50.339129, 44.284016], + [50.305643, 44.609836], + [51.278503, 44.514854], + [51.316899, 45.245998], + [52.16739, 45.408391], + [53.040876, 45.259047], + [53.220866, 46.234646], + [53.042737, 46.853006], + [52.042023, 46.804637], + [51.191945, 47.048705], + [50.034083, 46.60899], + [49.10116, 46.39933], + [48.593241, 46.561034], + [48.694734, 47.075628], + [48.057253, 47.743753], + [47.315231, 47.715847], + [46.466446, 48.394152], + [47.043672, 49.152039], + [46.751596, 49.356006], + [47.54948, 50.454698], + [48.577841, 49.87476], + [48.702382, 50.605128], + [50.766648, 51.692762], + [52.328724, 51.718652], + [54.532878, 51.02624], + [55.716941, 50.621717], + [56.777961, 51.043551], + [58.363291, 51.063653], + [59.642282, 50.545442], + [59.932807, 50.842194], + [61.337424, 50.79907], + [61.588003, 51.272659], + [59.967534, 51.96042], + [60.927269, 52.447548], + [60.739993, 52.719986], + [61.699986, 52.979996], + [60.978066, 53.664993], + [61.436591, 54.006265], + [65.178534, 54.354228], + [65.666876, 54.601267], + [68.1691, 54.970392], + [69.068167, 55.38525], + [70.865267, 55.169734], + [71.180131, 54.133285], + [72.22415, 54.376655], + [73.508516, 54.035617], + [73.425679, 53.48981], + [74.384845, 53.546861], + [76.8911, 54.490524], + [76.525179, 54.177003], + [77.800916, 53.404415], + [80.03556, 50.864751], + [80.568447, 51.388336], + [81.945986, 50.812196], + [83.383004, 51.069183], + [83.935115, 50.889246], + [84.416377, 50.3114], + [85.11556, 50.117303], + [85.54127, 49.692859], + [86.829357, 49.826675], + [87.35997, 49.214981], + [86.598776, 48.549182], + [85.768233, 48.455751], + [85.720484, 47.452969], + [85.16429, 47.000956], + [83.180484, 47.330031], + [82.458926, 45.53965], + [81.947071, 45.317027], + [79.966106, 44.917517], + [80.866206, 43.180362], + [80.18015, 42.920068], + [80.25999, 42.349999], + [79.643645, 42.496683], + [79.142177, 42.856092], + [77.658392, 42.960686], + [76.000354, 42.988022], + [75.636965, 42.8779], + [74.212866, 43.298339], + [73.645304, 43.091272], + [73.489758, 42.500894], + [71.844638, 42.845395], + [71.186281, 42.704293], + [70.962315, 42.266154] + ] + ] + }, + "type": "Feature", + "id": "KAZ", + "properties": { "name": "Kazakhstan", "id": "KAZ", "centroid": [71.3, 51.1] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [40.993, -0.85829], + [41.58513, -1.68325], + [40.88477, -2.08255], + [40.63785, -2.49979], + [40.26304, -2.57309], + [40.12119, -3.27768], + [39.80006, -3.68116], + [39.60489, -4.34653], + [39.20222, -4.67677], + [37.7669, -3.67712], + [37.69869, -3.09699], + [34.07262, -1.05982], + [33.903711, -0.95], + [33.893569, 0.109814], + [34.18, 0.515], + [34.6721, 1.17694], + [35.03599, 1.90584], + [34.59607, 3.05374], + [34.47913, 3.5556], + [34.005, 4.249885], + [34.620196, 4.847123], + [35.298007, 5.506], + [35.817448, 5.338232], + [35.817448, 4.776966], + [36.159079, 4.447864], + [36.855093, 4.447864], + [38.120915, 3.598605], + [38.43697, 3.58851], + [38.67114, 3.61607], + [38.89251, 3.50074], + [39.559384, 3.42206], + [39.85494, 3.83879], + [40.76848, 4.25702], + [41.1718, 3.91909], + [41.855083, 3.918912], + [40.98105, 2.78452], + [40.993, -0.85829] + ] + ] + }, + "type": "Feature", + "id": "KEN", + "properties": { "name": "Kenya", "id": "KEN", "centroid": [36.48, -1.17] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [70.962315, 42.266154], + [71.186281, 42.704293], + [71.844638, 42.845395], + [73.489758, 42.500894], + [73.645304, 43.091272], + [74.212866, 43.298339], + [75.636965, 42.8779], + [76.000354, 42.988022], + [77.658392, 42.960686], + [79.142177, 42.856092], + [79.643645, 42.496683], + [80.25999, 42.349999], + [80.11943, 42.123941], + [78.543661, 41.582243], + [78.187197, 41.185316], + [76.904484, 41.066486], + [76.526368, 40.427946], + [75.467828, 40.562072], + [74.776862, 40.366425], + [73.822244, 39.893973], + [73.960013, 39.660008], + [73.675379, 39.431237], + [71.784694, 39.279463], + [70.549162, 39.604198], + [69.464887, 39.526683], + [69.55961, 40.103211], + [70.648019, 39.935754], + [71.014198, 40.244366], + [71.774875, 40.145844], + [73.055417, 40.866033], + [71.870115, 41.3929], + [71.157859, 41.143587], + [70.420022, 41.519998], + [71.259248, 42.167711], + [70.962315, 42.266154] + ] + ] + }, + "type": "Feature", + "id": "KGZ", + "properties": { "name": "Kyrgyzstan", "id": "KGZ", "centroid": [74.46, 42.54] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [103.49728, 10.632555], + [103.09069, 11.153661], + [102.584932, 12.186595], + [102.348099, 13.394247], + [102.988422, 14.225721], + [104.281418, 14.416743], + [105.218777, 14.273212], + [106.043946, 13.881091], + [106.496373, 14.570584], + [107.382727, 14.202441], + [107.614548, 13.535531], + [107.491403, 12.337206], + [105.810524, 11.567615], + [106.24967, 10.961812], + [105.199915, 10.88931], + [104.334335, 10.486544], + [103.49728, 10.632555] + ] + ] + }, + "type": "Feature", + "id": "KHM", + "properties": { "name": "Cambodia", "id": "KHM", "centroid": [104.55, 11.33] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [128.349716, 38.612243], + [129.21292, 37.432392], + [129.46045, 36.784189], + [129.468304, 35.632141], + [129.091377, 35.082484], + [128.18585, 34.890377], + [127.386519, 34.475674], + [126.485748, 34.390046], + [126.37392, 34.93456], + [126.559231, 35.684541], + [126.117398, 36.725485], + [126.860143, 36.893924], + [126.174759, 37.749686], + [126.237339, 37.840378], + [126.68372, 37.804773], + [127.073309, 38.256115], + [127.780035, 38.304536], + [128.205746, 38.370397], + [128.349716, 38.612243] + ] + ] + }, + "type": "Feature", + "id": "KOR", + "properties": { "name": "South Korea", "id": "KOR", "centroid": [126.58, 37.31] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [47.974519, 29.975819], + [48.183189, 29.534477], + [48.093943, 29.306299], + [48.416094, 28.552004], + [47.708851, 28.526063], + [47.459822, 29.002519], + [46.568713, 29.099025], + [47.302622, 30.05907], + [47.974519, 29.975819] + ] + ] + }, + "type": "Feature", + "id": "KWT", + "properties": { "name": "Kuwait", "id": "KWT", "centroid": [48, 29.3] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [105.218777, 14.273212], + [105.544338, 14.723934], + [105.589039, 15.570316], + [104.779321, 16.441865], + [104.716947, 17.428859], + [103.956477, 18.240954], + [103.200192, 18.309632], + [102.998706, 17.961695], + [102.413005, 17.932782], + [102.113592, 18.109102], + [101.059548, 17.512497], + [101.035931, 18.408928], + [101.282015, 19.462585], + [100.606294, 19.508344], + [100.548881, 20.109238], + [100.115988, 20.41785], + [100.329101, 20.786122], + [101.180005, 21.436573], + [101.270026, 21.201652], + [101.80312, 21.174367], + [101.652018, 22.318199], + [102.170436, 22.464753], + [102.754896, 21.675137], + [103.203861, 20.766562], + [104.435, 20.758733], + [104.822574, 19.886642], + [104.183388, 19.624668], + [103.896532, 19.265181], + [105.094598, 18.666975], + [105.925762, 17.485315], + [106.556008, 16.604284], + [107.312706, 15.908538], + [107.564525, 15.202173], + [107.382727, 14.202441], + [106.496373, 14.570584], + [106.043946, 13.881091], + [105.218777, 14.273212] + ] + ] + }, + "type": "Feature", + "id": "LAO", + "properties": { "name": "Laos", "id": "LAO", "centroid": [102.36, 17.58] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [35.821101, 33.277426], + [35.552797, 33.264275], + [35.460709, 33.08904], + [35.126053, 33.0909], + [35.482207, 33.90545], + [35.979592, 34.610058], + [35.998403, 34.644914], + [36.448194, 34.593935], + [36.61175, 34.201789], + [36.06646, 33.824912], + [35.821101, 33.277426] + ] + ] + }, + "type": "Feature", + "id": "LBN", + "properties": { "name": "Lebanon", "id": "LBN", "centroid": [35.31, 33.53] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-7.712159, 4.364566], + [-7.974107, 4.355755], + [-9.004794, 4.832419], + [-9.91342, 5.593561], + [-10.765384, 6.140711], + [-11.438779, 6.785917], + [-11.199802, 7.105846], + [-11.146704, 7.396706], + [-10.695595, 7.939464], + [-10.230094, 8.406206], + [-10.016567, 8.428504], + [-9.755342, 8.541055], + [-9.33728, 7.928534], + [-9.403348, 7.526905], + [-9.208786, 7.313921], + [-8.926065, 7.309037], + [-8.722124, 7.711674], + [-8.439298, 7.686043], + [-8.485446, 7.395208], + [-8.385452, 6.911801], + [-8.60288, 6.467564], + [-8.311348, 6.193033], + [-7.993693, 6.12619], + [-7.570153, 5.707352], + [-7.539715, 5.313345], + [-7.635368, 5.188159], + [-7.712159, 4.364566] + ] + ] + }, + "type": "Feature", + "id": "LBR", + "properties": { "name": "Liberia", "id": "LBR", "centroid": [-10.47, 6.18] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [14.8513, 22.86295], + [14.143871, 22.491289], + [13.581425, 23.040506], + [11.999506, 23.471668], + [11.560669, 24.097909], + [10.771364, 24.562532], + [10.303847, 24.379313], + [9.948261, 24.936954], + [9.910693, 25.365455], + [9.319411, 26.094325], + [9.716286, 26.512206], + [9.629056, 27.140953], + [9.756128, 27.688259], + [9.683885, 28.144174], + [9.859998, 28.95999], + [9.805634, 29.424638], + [9.48214, 30.307556], + [9.970017, 30.539325], + [10.056575, 30.961831], + [9.950225, 31.37607], + [10.636901, 31.761421], + [10.94479, 32.081815], + [11.432253, 32.368903], + [11.488787, 33.136996], + [12.66331, 32.79278], + [13.08326, 32.87882], + [13.91868, 32.71196], + [15.24563, 32.26508], + [15.71394, 31.37626], + [16.61162, 31.18218], + [18.02109, 30.76357], + [19.08641, 30.26639], + [19.57404, 30.52582], + [20.05335, 30.98576], + [19.82033, 31.75179], + [20.13397, 32.2382], + [20.85452, 32.7068], + [21.54298, 32.8432], + [22.89576, 32.63858], + [23.2368, 32.19149], + [23.60913, 32.18726], + [23.9275, 32.01667], + [24.92114, 31.89936], + [25.16482, 31.56915], + [24.80287, 31.08929], + [24.95762, 30.6616], + [24.70007, 30.04419], + [25, 29.238655], + [25, 25.6825], + [25, 22], + [25, 20.00304], + [23.85, 20], + [23.83766, 19.58047], + [19.84926, 21.49509], + [15.86085, 23.40972], + [14.8513, 22.86295] + ] + ] + }, + "type": "Feature", + "id": "LBY", + "properties": { "name": "Libya", "id": "LBY", "centroid": [13.11, 32.52] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [81.787959, 7.523055], + [81.637322, 6.481775], + [81.21802, 6.197141], + [80.348357, 5.96837], + [79.872469, 6.763463], + [79.695167, 8.200843], + [80.147801, 9.824078], + [80.838818, 9.268427], + [81.304319, 8.564206], + [81.787959, 7.523055] + ] + ] + }, + "type": "Feature", + "id": "LKA", + "properties": { "name": "Sri Lanka", "id": "LKA", "centroid": [79.54, 6.54] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [28.978263, -28.955597], + [29.325166, -29.257387], + [29.018415, -29.743766], + [28.8484, -30.070051], + [28.291069, -30.226217], + [28.107205, -30.545732], + [27.749397, -30.645106], + [26.999262, -29.875954], + [27.532511, -29.242711], + [28.074338, -28.851469], + [28.5417, -28.647502], + [28.978263, -28.955597] + ] + ] + }, + "type": "Feature", + "id": "LSO", + "properties": { "name": "Lesotho", "id": "LSO", "centroid": [27.3, -29.18] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [22.731099, 54.327537], + [22.651052, 54.582741], + [22.757764, 54.856574], + [22.315724, 55.015299], + [21.268449, 55.190482], + [21.0558, 56.031076], + [22.201157, 56.337802], + [23.878264, 56.273671], + [24.860684, 56.372528], + [25.000934, 56.164531], + [25.533047, 56.100297], + [26.494331, 55.615107], + [26.588279, 55.167176], + [25.768433, 54.846963], + [25.536354, 54.282423], + [24.450684, 53.905702], + [23.484128, 53.912498], + [23.243987, 54.220567], + [22.731099, 54.327537] + ] + ] + }, + "type": "Feature", + "id": "LTU", + "properties": { "name": "Lithuania", "id": "LTU", "centroid": [25.19, 54.38] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [6.043073, 50.128052], + [6.242751, 49.902226], + [6.18632, 49.463803], + [5.897759, 49.442667], + [5.674052, 49.529484], + [5.782417, 50.090328], + [6.043073, 50.128052] + ] + ] + }, + "type": "Feature", + "id": "LUX", + "properties": { "name": "Luxembourg", "id": "LUX", "centroid": [6.09, 49.37] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [21.0558, 56.031076], + [21.090424, 56.783873], + [21.581866, 57.411871], + [22.524341, 57.753374], + [23.318453, 57.006236], + [24.12073, 57.025693], + [24.312863, 57.793424], + [25.164594, 57.970157], + [25.60281, 57.847529], + [26.463532, 57.476389], + [27.288185, 57.474528], + [27.770016, 57.244258], + [27.855282, 56.759326], + [28.176709, 56.16913], + [27.10246, 55.783314], + [26.494331, 55.615107], + [25.533047, 56.100297], + [25.000934, 56.164531], + [24.860684, 56.372528], + [23.878264, 56.273671], + [22.201157, 56.337802], + [21.0558, 56.031076] + ] + ] + }, + "type": "Feature", + "id": "LVA", + "properties": { "name": "Latvia", "id": "LVA", "centroid": [24.08, 56.53] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-5.193863, 35.755182], + [-4.591006, 35.330712], + [-3.640057, 35.399855], + [-2.604306, 35.179093], + [-2.169914, 35.168396], + [-1.792986, 34.527919], + [-1.733455, 33.919713], + [-1.388049, 32.864015], + [-1.124551, 32.651522], + [-1.307899, 32.262889], + [-2.616605, 32.094346], + [-3.06898, 31.724498], + [-3.647498, 31.637294], + [-3.690441, 30.896952], + [-4.859646, 30.501188], + [-5.242129, 30.000443], + [-6.060632, 29.7317], + [-7.059228, 29.579228], + [-8.674116, 28.841289], + [-8.66559, 27.656426], + [-8.817809, 27.656426], + [-8.817828, 27.656426], + [-8.794884, 27.120696], + [-9.413037, 27.088476], + [-9.735343, 26.860945], + [-10.189424, 26.860945], + [-10.551263, 26.990808], + [-11.392555, 26.883424], + [-11.71822, 26.104092], + [-12.030759, 26.030866], + [-12.500963, 24.770116], + [-13.89111, 23.691009], + [-14.221168, 22.310163], + [-14.630833, 21.86094], + [-14.750955, 21.5006], + [-17.002962, 21.420734], + [-17.020428, 21.42231], + [-16.973248, 21.885745], + [-16.589137, 22.158234], + [-16.261922, 22.67934], + [-16.326414, 23.017768], + [-15.982611, 23.723358], + [-15.426004, 24.359134], + [-15.089332, 24.520261], + [-14.824645, 25.103533], + [-14.800926, 25.636265], + [-14.43994, 26.254418], + [-13.773805, 26.618892], + [-13.139942, 27.640148], + [-13.121613, 27.654148], + [-12.618837, 28.038186], + [-11.688919, 28.148644], + [-10.900957, 28.832142], + [-10.399592, 29.098586], + [-9.564811, 29.933574], + [-9.814718, 31.177736], + [-9.434793, 32.038096], + [-9.300693, 32.564679], + [-8.657476, 33.240245], + [-7.654178, 33.697065], + [-6.912544, 34.110476], + [-6.244342, 35.145865], + [-5.929994, 35.759988], + [-5.193863, 35.755182] + ] + ] + }, + "type": "Feature", + "id": "MAR", + "properties": { "name": "Morocco", "id": "MAR", "centroid": [-6.5, 34.01] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [26.619337, 48.220726], + [26.857824, 48.368211], + [27.522537, 48.467119], + [28.259547, 48.155562], + [28.670891, 48.118149], + [29.122698, 47.849095], + [29.050868, 47.510227], + [29.415135, 47.346645], + [29.559674, 46.928583], + [29.908852, 46.674361], + [29.83821, 46.525326], + [30.024659, 46.423937], + [29.759972, 46.349988], + [29.170654, 46.379262], + [29.072107, 46.517678], + [28.862972, 46.437889], + [28.933717, 46.25883], + [28.659987, 45.939987], + [28.485269, 45.596907], + [28.233554, 45.488283], + [28.054443, 45.944586], + [28.160018, 46.371563], + [28.12803, 46.810476], + [27.551166, 47.405117], + [27.233873, 47.826771], + [26.924176, 48.123264], + [26.619337, 48.220726] + ] + ] + }, + "type": "Feature", + "id": "MDA", + "properties": { "name": "Moldova", "id": "MDA", "centroid": [28.51, 47] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [49.543519, -12.469833], + [49.808981, -12.895285], + [50.056511, -13.555761], + [50.217431, -14.758789], + [50.476537, -15.226512], + [50.377111, -15.706069], + [50.200275, -16.000263], + [49.860606, -15.414253], + [49.672607, -15.710204], + [49.863344, -16.451037], + [49.774564, -16.875042], + [49.498612, -17.106036], + [49.435619, -17.953064], + [49.041792, -19.118781], + [48.548541, -20.496888], + [47.930749, -22.391501], + [47.547723, -23.781959], + [47.095761, -24.94163], + [46.282478, -25.178463], + [45.409508, -25.601434], + [44.833574, -25.346101], + [44.03972, -24.988345], + [43.763768, -24.460677], + [43.697778, -23.574116], + [43.345654, -22.776904], + [43.254187, -22.057413], + [43.433298, -21.336475], + [43.893683, -21.163307], + [43.89637, -20.830459], + [44.374325, -20.072366], + [44.464397, -19.435454], + [44.232422, -18.961995], + [44.042976, -18.331387], + [43.963084, -17.409945], + [44.312469, -16.850496], + [44.446517, -16.216219], + [44.944937, -16.179374], + [45.502732, -15.974373], + [45.872994, -15.793454], + [46.312243, -15.780018], + [46.882183, -15.210182], + [47.70513, -14.594303], + [48.005215, -14.091233], + [47.869047, -13.663869], + [48.293828, -13.784068], + [48.84506, -13.089175], + [48.863509, -12.487868], + [49.194651, -12.040557], + [49.543519, -12.469833] + ] + ] + }, + "type": "Feature", + "id": "MDG", + "properties": { "name": "Madagascar", "id": "MDG", "centroid": [47.31, -18.55] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-97.140008, 25.869997], + [-97.528072, 24.992144], + [-97.702946, 24.272343], + [-97.776042, 22.93258], + [-97.872367, 22.444212], + [-97.699044, 21.898689], + [-97.38896, 21.411019], + [-97.189333, 20.635433], + [-96.525576, 19.890931], + [-96.292127, 19.320371], + [-95.900885, 18.828024], + [-94.839063, 18.562717], + [-94.42573, 18.144371], + [-93.548651, 18.423837], + [-92.786114, 18.524839], + [-92.037348, 18.704569], + [-91.407903, 18.876083], + [-90.77187, 19.28412], + [-90.53359, 19.867418], + [-90.451476, 20.707522], + [-90.278618, 20.999855], + [-89.601321, 21.261726], + [-88.543866, 21.493675], + [-87.658417, 21.458846], + [-87.05189, 21.543543], + [-86.811982, 21.331515], + [-86.845908, 20.849865], + [-87.383291, 20.255405], + [-87.621054, 19.646553], + [-87.43675, 19.472403], + [-87.58656, 19.04013], + [-87.837191, 18.259816], + [-88.090664, 18.516648], + [-88.300031, 18.499982], + [-88.490123, 18.486831], + [-88.848344, 17.883198], + [-89.029857, 18.001511], + [-89.150909, 17.955468], + [-89.14308, 17.808319], + [-90.067934, 17.819326], + [-91.00152, 17.817595], + [-91.002269, 17.254658], + [-91.453921, 17.252177], + [-91.08167, 16.918477], + [-90.711822, 16.687483], + [-90.600847, 16.470778], + [-90.438867, 16.41011], + [-90.464473, 16.069562], + [-91.74796, 16.066565], + [-92.229249, 15.251447], + [-92.087216, 15.064585], + [-92.20323, 14.830103], + [-92.22775, 14.538829], + [-93.359464, 15.61543], + [-93.875169, 15.940164], + [-94.691656, 16.200975], + [-95.250227, 16.128318], + [-96.053382, 15.752088], + [-96.557434, 15.653515], + [-97.263592, 15.917065], + [-98.01303, 16.107312], + [-98.947676, 16.566043], + [-99.697397, 16.706164], + [-100.829499, 17.171071], + [-101.666089, 17.649026], + [-101.918528, 17.91609], + [-102.478132, 17.975751], + [-103.50099, 18.292295], + [-103.917527, 18.748572], + [-104.99201, 19.316134], + [-105.493038, 19.946767], + [-105.731396, 20.434102], + [-105.397773, 20.531719], + [-105.500661, 20.816895], + [-105.270752, 21.076285], + [-105.265817, 21.422104], + [-105.603161, 21.871146], + [-105.693414, 22.26908], + [-106.028716, 22.773752], + [-106.90998, 23.767774], + [-107.915449, 24.548915], + [-108.401905, 25.172314], + [-109.260199, 25.580609], + [-109.444089, 25.824884], + [-109.291644, 26.442934], + [-109.801458, 26.676176], + [-110.391732, 27.162115], + [-110.641019, 27.859876], + [-111.178919, 27.941241], + [-111.759607, 28.467953], + [-112.228235, 28.954409], + [-112.271824, 29.266844], + [-112.809594, 30.021114], + [-113.163811, 30.786881], + [-113.148669, 31.170966], + [-113.871881, 31.567608], + [-114.205737, 31.524045], + [-114.776451, 31.799532], + [-114.9367, 31.393485], + [-114.771232, 30.913617], + [-114.673899, 30.162681], + [-114.330974, 29.750432], + [-113.588875, 29.061611], + [-113.424053, 28.826174], + [-113.271969, 28.754783], + [-113.140039, 28.411289], + [-112.962298, 28.42519], + [-112.761587, 27.780217], + [-112.457911, 27.525814], + [-112.244952, 27.171727], + [-111.616489, 26.662817], + [-111.284675, 25.73259], + [-110.987819, 25.294606], + [-110.710007, 24.826004], + [-110.655049, 24.298595], + [-110.172856, 24.265548], + [-109.771847, 23.811183], + [-109.409104, 23.364672], + [-109.433392, 23.185588], + [-109.854219, 22.818272], + [-110.031392, 22.823078], + [-110.295071, 23.430973], + [-110.949501, 24.000964], + [-111.670568, 24.484423], + [-112.182036, 24.738413], + [-112.148989, 25.470125], + [-112.300711, 26.012004], + [-112.777297, 26.32196], + [-113.464671, 26.768186], + [-113.59673, 26.63946], + [-113.848937, 26.900064], + [-114.465747, 27.14209], + [-115.055142, 27.722727], + [-114.982253, 27.7982], + [-114.570366, 27.741485], + [-114.199329, 28.115003], + [-114.162018, 28.566112], + [-114.931842, 29.279479], + [-115.518654, 29.556362], + [-115.887365, 30.180794], + [-116.25835, 30.836464], + [-116.721526, 31.635744], + [-117.12776, 32.53534], + [-115.99135, 32.61239], + [-114.72139, 32.72083], + [-114.815, 32.52528], + [-113.30498, 32.03914], + [-111.02361, 31.33472], + [-109.035, 31.34194], + [-108.24194, 31.34222], + [-108.24, 31.754854], + [-106.50759, 31.75452], + [-106.1429, 31.39995], + [-105.63159, 31.08383], + [-105.03737, 30.64402], + [-104.70575, 30.12173], + [-104.45697, 29.57196], + [-103.94, 29.27], + [-103.11, 28.97], + [-102.48, 29.76], + [-101.6624, 29.7793], + [-100.9576, 29.38071], + [-100.45584, 28.69612], + [-100.11, 28.11], + [-99.52, 27.54], + [-99.3, 26.84], + [-99.02, 26.37], + [-98.24, 26.06], + [-97.53, 25.84], + [-97.140008, 25.869997] + ] + ] + }, + "type": "Feature", + "id": "MEX", + "properties": { "name": "Mexico", "id": "MEX", "centroid": [-99.1, 19.2] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [20.59023, 41.85541], + [20.71731, 41.84711], + [20.76216, 42.05186], + [21.3527, 42.2068], + [21.576636, 42.245224], + [21.91708, 42.30364], + [22.380526, 42.32026], + [22.881374, 41.999297], + [22.952377, 41.337994], + [22.76177, 41.3048], + [22.597308, 41.130487], + [22.055378, 41.149866], + [21.674161, 40.931275], + [21.02004, 40.842727], + [20.60518, 41.08622], + [20.46315, 41.51509], + [20.59023, 41.85541] + ] + ] + }, + "type": "Feature", + "id": "MKD", + "properties": { "name": "Macedonia", "id": "MKD", "centroid": null } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-12.17075, 14.616834], + [-11.834208, 14.799097], + [-11.666078, 15.388208], + [-11.349095, 15.411256], + [-10.650791, 15.132746], + [-10.086846, 15.330486], + [-9.700255, 15.264107], + [-9.550238, 15.486497], + [-5.537744, 15.50169], + [-5.315277, 16.201854], + [-5.488523, 16.325102], + [-5.971129, 20.640833], + [-6.453787, 24.956591], + [-4.923337, 24.974574], + [-1.550055, 22.792666], + [1.823228, 20.610809], + [2.060991, 20.142233], + [2.683588, 19.85623], + [3.146661, 19.693579], + [3.158133, 19.057364], + [4.267419, 19.155265], + [4.27021, 16.852227], + [3.723422, 16.184284], + [3.638259, 15.56812], + [2.749993, 15.409525], + [1.385528, 15.323561], + [1.015783, 14.968182], + [0.374892, 14.928908], + [-0.266257, 14.924309], + [-0.515854, 15.116158], + [-1.066363, 14.973815], + [-2.001035, 14.559008], + [-2.191825, 14.246418], + [-2.967694, 13.79815], + [-3.103707, 13.541267], + [-3.522803, 13.337662], + [-4.006391, 13.472485], + [-4.280405, 13.228444], + [-4.427166, 12.542646], + [-5.220942, 11.713859], + [-5.197843, 11.375146], + [-5.470565, 10.95127], + [-5.404342, 10.370737], + [-5.816926, 10.222555], + [-6.050452, 10.096361], + [-6.205223, 10.524061], + [-6.493965, 10.411303], + [-6.666461, 10.430811], + [-6.850507, 10.138994], + [-7.622759, 10.147236], + [-7.89959, 10.297382], + [-8.029944, 10.206535], + [-8.335377, 10.494812], + [-8.282357, 10.792597], + [-8.407311, 10.909257], + [-8.620321, 10.810891], + [-8.581305, 11.136246], + [-8.376305, 11.393646], + [-8.786099, 11.812561], + [-8.905265, 12.088358], + [-9.127474, 12.30806], + [-9.327616, 12.334286], + [-9.567912, 12.194243], + [-9.890993, 12.060479], + [-10.165214, 11.844084], + [-10.593224, 11.923975], + [-10.87083, 12.177887], + [-11.036556, 12.211245], + [-11.297574, 12.077971], + [-11.456169, 12.076834], + [-11.513943, 12.442988], + [-11.467899, 12.754519], + [-11.553398, 13.141214], + [-11.927716, 13.422075], + [-12.124887, 13.994727], + [-12.17075, 14.616834] + ] + ] + }, + "type": "Feature", + "id": "MLI", + "properties": { "name": "Mali", "id": "MLI", "centroid": [-7.55, 12.34] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [99.543309, 20.186598], + [98.959676, 19.752981], + [98.253724, 19.708203], + [97.797783, 18.62708], + [97.375896, 18.445438], + [97.859123, 17.567946], + [98.493761, 16.837836], + [98.903348, 16.177824], + [98.537376, 15.308497], + [98.192074, 15.123703], + [98.430819, 14.622028], + [99.097755, 13.827503], + [99.212012, 13.269294], + [99.196354, 12.804748], + [99.587286, 11.892763], + [99.038121, 10.960546], + [98.553551, 9.93296], + [98.457174, 10.675266], + [98.764546, 11.441292], + [98.428339, 12.032987], + [98.509574, 13.122378], + [98.103604, 13.64046], + [97.777732, 14.837286], + [97.597072, 16.100568], + [97.16454, 16.928734], + [96.505769, 16.427241], + [95.369352, 15.71439], + [94.808405, 15.803454], + [94.188804, 16.037936], + [94.533486, 17.27724], + [94.324817, 18.213514], + [93.540988, 19.366493], + [93.663255, 19.726962], + [93.078278, 19.855145], + [92.368554, 20.670883], + [92.303234, 21.475485], + [92.652257, 21.324048], + [92.672721, 22.041239], + [93.166128, 22.27846], + [93.060294, 22.703111], + [93.286327, 23.043658], + [93.325188, 24.078556], + [94.106742, 23.850741], + [94.552658, 24.675238], + [94.603249, 25.162495], + [95.155153, 26.001307], + [95.124768, 26.573572], + [96.419366, 27.264589], + [97.133999, 27.083774], + [97.051989, 27.699059], + [97.402561, 27.882536], + [97.327114, 28.261583], + [97.911988, 28.335945], + [98.246231, 27.747221], + [98.68269, 27.508812], + [98.712094, 26.743536], + [98.671838, 25.918703], + [97.724609, 25.083637], + [97.60472, 23.897405], + [98.660262, 24.063286], + [98.898749, 23.142722], + [99.531992, 22.949039], + [99.240899, 22.118314], + [99.983489, 21.742937], + [100.416538, 21.558839], + [101.150033, 21.849984], + [101.180005, 21.436573], + [100.329101, 20.786122], + [100.115988, 20.41785], + [99.543309, 20.186598] + ] + ] + }, + "type": "Feature", + "id": "MMR", + "properties": { "name": "Myanmar", "id": "MMR", "centroid": [96.2, 16.45] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [19.801613, 42.500093], + [19.738051, 42.688247], + [19.30449, 42.19574], + [19.37177, 41.87755], + [19.16246, 41.95502], + [18.88214, 42.28151], + [18.45, 42.48], + [18.56, 42.65], + [18.70648, 43.20011], + [19.03165, 43.43253], + [19.21852, 43.52384], + [19.48389, 43.35229], + [19.63, 43.21378], + [19.95857, 43.10604], + [20.3398, 42.89852], + [20.25758, 42.81275], + [20.0707, 42.58863], + [19.801613, 42.500093] + ] + ] + }, + "type": "Feature", + "id": "MNE", + "properties": { "name": "Montenegro", "id": "MNE", "centroid": [19.28, 42.47] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [87.751264, 49.297198], + [88.805567, 49.470521], + [90.713667, 50.331812], + [92.234712, 50.802171], + [93.104219, 50.49529], + [94.147566, 50.480537], + [94.815949, 50.013433], + [95.814028, 49.977467], + [97.259728, 49.726061], + [98.231762, 50.422401], + [97.82574, 51.010995], + [98.861491, 52.047366], + [99.981732, 51.634006], + [100.88948, 51.516856], + [102.065223, 51.259921], + [102.255909, 50.510561], + [103.676545, 50.089966], + [104.621552, 50.275329], + [105.886591, 50.406019], + [106.888804, 50.274296], + [107.868176, 49.793705], + [108.475167, 49.282548], + [109.402449, 49.292961], + [110.662011, 49.130128], + [111.581231, 49.377968], + [112.89774, 49.543565], + [114.362456, 50.248303], + [114.96211, 50.140247], + [115.485695, 49.805177], + [116.678801, 49.888531], + [116.191802, 49.134598], + [115.485282, 48.135383], + [115.742837, 47.726545], + [116.308953, 47.85341], + [117.295507, 47.697709], + [118.064143, 48.06673], + [118.866574, 47.74706], + [119.772824, 47.048059], + [119.66327, 46.69268], + [118.874326, 46.805412], + [117.421701, 46.672733], + [116.717868, 46.388202], + [115.985096, 45.727235], + [114.460332, 45.339817], + [113.463907, 44.808893], + [112.436062, 45.011646], + [111.873306, 45.102079], + [111.348377, 44.457442], + [111.667737, 44.073176], + [111.829588, 43.743118], + [111.129682, 43.406834], + [110.412103, 42.871234], + [109.243596, 42.519446], + [107.744773, 42.481516], + [106.129316, 42.134328], + [104.964994, 41.59741], + [104.522282, 41.908347], + [103.312278, 41.907468], + [101.83304, 42.514873], + [100.845866, 42.663804], + [99.515817, 42.524691], + [97.451757, 42.74889], + [96.349396, 42.725635], + [95.762455, 43.319449], + [95.306875, 44.241331], + [94.688929, 44.352332], + [93.480734, 44.975472], + [92.133891, 45.115076], + [90.94554, 45.286073], + [90.585768, 45.719716], + [90.970809, 46.888146], + [90.280826, 47.693549], + [88.854298, 48.069082], + [88.013832, 48.599463], + [87.751264, 49.297198] + ] + ] + }, + "type": "Feature", + "id": "MNG", + "properties": { "name": "Mongolia", "id": "MNG", "centroid": [106.55, 47.55] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [34.559989, -11.52002], + [35.312398, -11.439146], + [36.514082, -11.720938], + [36.775151, -11.594537], + [37.471284, -11.568751], + [37.827645, -11.268769], + [38.427557, -11.285202], + [39.52103, -10.896854], + [40.316589, -10.317096], + [40.478387, -10.765441], + [40.437253, -11.761711], + [40.560811, -12.639177], + [40.59962, -14.201975], + [40.775475, -14.691764], + [40.477251, -15.406294], + [40.089264, -16.100774], + [39.452559, -16.720891], + [38.538351, -17.101023], + [37.411133, -17.586368], + [36.281279, -18.659688], + [35.896497, -18.84226], + [35.1984, -19.552811], + [34.786383, -19.784012], + [34.701893, -20.497043], + [35.176127, -21.254361], + [35.373428, -21.840837], + [35.385848, -22.14], + [35.562546, -22.09], + [35.533935, -23.070788], + [35.371774, -23.535359], + [35.60747, -23.706563], + [35.458746, -24.12261], + [35.040735, -24.478351], + [34.215824, -24.816314], + [33.01321, -25.357573], + [32.574632, -25.727318], + [32.660363, -26.148584], + [32.915955, -26.215867], + [32.83012, -26.742192], + [32.071665, -26.73382], + [31.985779, -26.29178], + [31.837778, -25.843332], + [31.752408, -25.484284], + [31.930589, -24.369417], + [31.670398, -23.658969], + [31.191409, -22.25151], + [32.244988, -21.116489], + [32.508693, -20.395292], + [32.659743, -20.30429], + [32.772708, -19.715592], + [32.611994, -19.419383], + [32.654886, -18.67209], + [32.849861, -17.979057], + [32.847639, -16.713398], + [32.328239, -16.392074], + [31.852041, -16.319417], + [31.636498, -16.07199], + [31.173064, -15.860944], + [30.338955, -15.880839], + [30.274256, -15.507787], + [30.179481, -14.796099], + [33.214025, -13.97186], + [33.7897, -14.451831], + [34.064825, -14.35995], + [34.459633, -14.61301], + [34.517666, -15.013709], + [34.307291, -15.478641], + [34.381292, -16.18356], + [35.03381, -16.8013], + [35.339063, -16.10744], + [35.771905, -15.896859], + [35.686845, -14.611046], + [35.267956, -13.887834], + [34.907151, -13.565425], + [34.559989, -13.579998], + [34.280006, -12.280025], + [34.559989, -11.52002] + ] + ] + }, + "type": "Feature", + "id": "MOZ", + "properties": { "name": "Mozambique", "id": "MOZ", "centroid": [32.32, -25.58] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-12.17075, 14.616834], + [-12.830658, 15.303692], + [-13.435738, 16.039383], + [-14.099521, 16.304302], + [-14.577348, 16.598264], + [-15.135737, 16.587282], + [-15.623666, 16.369337], + [-16.12069, 16.455663], + [-16.463098, 16.135036], + [-16.549708, 16.673892], + [-16.270552, 17.166963], + [-16.146347, 18.108482], + [-16.256883, 19.096716], + [-16.377651, 19.593817], + [-16.277838, 20.092521], + [-16.536324, 20.567866], + [-17.063423, 20.999752], + [-16.845194, 21.333323], + [-12.929102, 21.327071], + [-13.118754, 22.77122], + [-12.874222, 23.284832], + [-11.937224, 23.374594], + [-11.969419, 25.933353], + [-8.687294, 25.881056], + [-8.6844, 27.395744], + [-4.923337, 24.974574], + [-6.453787, 24.956591], + [-5.971129, 20.640833], + [-5.488523, 16.325102], + [-5.315277, 16.201854], + [-5.537744, 15.50169], + [-9.550238, 15.486497], + [-9.700255, 15.264107], + [-10.086846, 15.330486], + [-10.650791, 15.132746], + [-11.349095, 15.411256], + [-11.666078, 15.388208], + [-11.834208, 14.799097], + [-12.17075, 14.616834] + ] + ] + }, + "type": "Feature", + "id": "MRT", + "properties": { "name": "Mauritania", "id": "MRT", "centroid": [-15.58, 18.04] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [34.559989, -11.52002], + [34.280006, -12.280025], + [34.559989, -13.579998], + [34.907151, -13.565425], + [35.267956, -13.887834], + [35.686845, -14.611046], + [35.771905, -15.896859], + [35.339063, -16.10744], + [35.03381, -16.8013], + [34.381292, -16.18356], + [34.307291, -15.478641], + [34.517666, -15.013709], + [34.459633, -14.61301], + [34.064825, -14.35995], + [33.7897, -14.451831], + [33.214025, -13.97186], + [32.688165, -13.712858], + [32.991764, -12.783871], + [33.306422, -12.435778], + [33.114289, -11.607198], + [33.31531, -10.79655], + [33.485688, -10.525559], + [33.231388, -9.676722], + [32.759375, -9.230599], + [33.739729, -9.417151], + [33.940838, -9.693674], + [34.280006, -10.16], + [34.559989, -11.52002] + ] + ] + }, + "type": "Feature", + "id": "MWI", + "properties": { "name": "Malawi", "id": "MWI", "centroid": [33.48, -14] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [111.38925781250006, 2.415332031250031], + [111.31152343749997, 2.437597656250034], + [111.33349609374997, 2.768310546875], + [111.38925781250006, 2.415332031250031] + ] + ], + [ + [ + [104.22158203125, 2.731738281250003], + [104.1291015625001, 2.767236328125037], + [104.18476562500004, 2.871728515625009], + [104.22158203125, 2.731738281250003] + ] + ], + [ + [ + [117.88476562499997, 4.186132812500006], + [117.64902343750012, 4.168994140624974], + [117.70800781249997, 4.262402343749997], + [117.88476562499997, 4.186132812500006] + ] + ], + [ + [ + [100.28896484375005, 5.294726562499989], + [100.19101562500006, 5.28286132812498], + [100.2455078125, 5.467773437499986], + [100.33886718749997, 5.410058593750037], + [100.28896484375005, 5.294726562499989] + ] + ], + [ + [ + [99.848046875, 6.465722656249994], + [99.9186523437501, 6.358593750000011], + [99.74375, 6.263281249999963], + [99.64628906250002, 6.418359375000023], + [99.848046875, 6.465722656249994] + ] + ], + [ + [ + [102.10107421874997, 6.242236328125031], + [102.34013671875002, 6.172021484375023], + [102.534375, 5.862548828125028], + [103.09707031250005, 5.408447265624986], + [103.41582031250007, 4.85029296875004], + [103.43945312499997, 2.93310546875], + [103.8122070312501, 2.58046875], + [104.21855468750002, 1.722851562499997], + [104.25009765625012, 1.388574218750009], + [104.11494140625004, 1.412255859375037], + [103.98144531250003, 1.623632812500034], + [103.99150390625002, 1.454785156249997], + [103.6945312500001, 1.449658203125026], + [103.48027343750007, 1.329492187499966], + [103.35683593750005, 1.546142578125057], + [102.72714843750012, 1.855566406250034], + [101.29550781250012, 2.885205078125011], + [101.29990234375012, 3.253271484375034], + [100.71542968750006, 3.966210937499966], + [100.79550781250012, 4.023388671874983], + [100.61455078125002, 4.3734375], + [100.34326171874997, 5.984179687500031], + [100.11914062499997, 6.441992187500048], + [100.26142578125004, 6.682714843749963], + [100.3454101562501, 6.549902343750006], + [100.75449218750012, 6.460058593749991], + [100.87392578125, 6.24541015624996], + [101.05351562500002, 6.242578125], + [100.98164062500004, 5.771044921875045], + [101.1139648437501, 5.636767578125045], + [101.5560546875, 5.907763671875003], + [101.67841796875004, 5.778808593750028], + [101.87363281250012, 5.825292968749991], + [102.10107421874997, 6.242236328125031] + ] + ], + [ + [ + [117.5744140625001, 4.17060546875004], + [117.10058593750003, 4.337060546875023], + [116.51474609375006, 4.370800781249969], + [115.86074218750005, 4.348046875000037], + [115.67880859375006, 4.193017578124994], + [115.45439453125002, 3.034326171875009], + [115.24697265625005, 3.025927734374989], + [115.117578125, 2.89487304687502], + [115.08076171875004, 2.63422851562504], + [115.1791015625, 2.523193359374972], + [114.78642578125002, 2.250488281250014], + [114.83056640625003, 1.980029296874989], + [114.5125, 1.452001953124963], + [113.90234375000003, 1.434277343749997], + [113.6222656250001, 1.2359375], + [113.00654296875004, 1.433886718750003], + [112.94296875000006, 1.566992187500034], + [112.47617187500006, 1.559082031250028], + [112.1857421875001, 1.4390625], + [112.078515625, 1.143359374999974], + [111.80898437500005, 1.011669921874969], + [111.10136718750002, 1.050537109374986], + [110.50576171875005, 0.861962890625023], + [109.65400390625004, 1.614892578125023], + [109.53896484375, 1.89619140625004], + [109.62890625000003, 2.027539062499983], + [109.86484375000012, 1.764453125000031], + [110.34921875000012, 1.719726562499972], + [111.22324218750012, 1.395849609374991], + [111.0287109375, 1.557812500000026], + [111.26816406250012, 2.13974609375002], + [111.20859375000012, 2.379638671875043], + [111.44384765625003, 2.381542968749983], + [111.5125, 2.743017578124991], + [112.98789062500006, 3.161914062499974], + [113.92392578125006, 4.243212890625003], + [114.0638671875, 4.592675781249966], + [114.65410156250007, 4.037646484375045], + [114.84023437500005, 4.393212890625009], + [114.74667968750006, 4.718066406250017], + [115.02675781250005, 4.899707031249989], + [115.10703125000006, 4.390429687499974], + [115.290625, 4.352587890624989], + [115.1400390625, 4.899755859374991], + [115.37490234375, 4.932763671874966], + [115.55449218750007, 5.093554687500045], + [115.41904296875012, 5.413183593749963], + [115.60390625, 5.603417968749994], + [115.74082031250012, 5.533007812500045], + [115.8771484375001, 5.613525390625014], + [116.74980468750007, 6.977099609374989], + [116.8498046875001, 6.826708984374989], + [116.78808593749997, 6.606103515624994], + [117.12851562500012, 6.968896484375009], + [117.2298828125, 6.939990234374974], + [117.29404296875006, 6.676904296875023], + [117.60966796875002, 6.512646484375054], + [117.69375, 6.35], + [117.64453124999997, 6.001855468749994], + [117.5011718750001, 5.884667968750009], + [118.00380859375, 6.053320312499991], + [118.11582031250006, 5.8625], + [117.93476562500004, 5.7875], + [117.97363281249997, 5.70625], + [118.35312500000012, 5.80605468749998], + [118.59482421875006, 5.592089843750003], + [119.22343750000007, 5.412646484375031], + [119.2663085937501, 5.308105468750057], + [119.21962890625, 5.159814453125037], + [118.9125, 5.02290039062504], + [118.26054687500007, 4.988867187500034], + [118.18535156250002, 4.828515625000051], + [118.5625, 4.502148437499997], + [118.54833984375003, 4.379248046875006], + [118.008203125, 4.250244140625014], + [117.6964843750001, 4.342822265625045], + [117.5744140625001, 4.17060546875004] + ] + ], + [ + [ + [117.14160156250003, 7.168212890625028], + [117.08066406250006, 7.115283203124989], + [117.06425781250007, 7.26069335937504], + [117.2640625, 7.351660156250006], + [117.26679687500004, 7.220800781249991], + [117.14160156250003, 7.168212890625028] + ] + ] + ] + }, + "type": "Feature", + "id": "MYS", + "properties": { "name": "Malaysia", "id": "MYS", "centroid": [101.41, 3.09] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [16.344977, -28.576705], + [15.601818, -27.821247], + [15.210472, -27.090956], + [14.989711, -26.117372], + [14.743214, -25.39292], + [14.408144, -23.853014], + [14.385717, -22.656653], + [14.257714, -22.111208], + [13.868642, -21.699037], + [13.352498, -20.872834], + [12.826845, -19.673166], + [12.608564, -19.045349], + [11.794919, -18.069129], + [11.734199, -17.301889], + [12.215461, -17.111668], + [12.814081, -16.941343], + [13.462362, -16.971212], + [14.058501, -17.423381], + [14.209707, -17.353101], + [18.263309, -17.309951], + [18.956187, -17.789095], + [21.377176, -17.930636], + [23.215048, -17.523116], + [24.033862, -17.295843], + [24.682349, -17.353411], + [25.07695, -17.578823], + [25.084443, -17.661816], + [24.520705, -17.887125], + [24.217365, -17.889347], + [23.579006, -18.281261], + [23.196858, -17.869038], + [21.65504, -18.219146], + [20.910641, -18.252219], + [20.881134, -21.814327], + [19.895458, -21.849157], + [19.895768, -24.76779], + [19.894734, -28.461105], + [19.002127, -28.972443], + [18.464899, -29.045462], + [17.836152, -28.856378], + [17.387497, -28.783514], + [17.218929, -28.355943], + [16.824017, -28.082162], + [16.344977, -28.576705] + ] + ] + }, + "type": "Feature", + "id": "NAM", + "properties": { "name": "Namibia", "id": "NAM", "centroid": [17.04, -22.35] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [165.77999, -21.080005], + [166.599991, -21.700019], + [167.120011, -22.159991], + [166.740035, -22.399976], + [166.189732, -22.129708], + [165.474375, -21.679607], + [164.829815, -21.14982], + [164.167995, -20.444747], + [164.029606, -20.105646], + [164.459967, -20.120012], + [165.020036, -20.459991], + [165.460009, -20.800022], + [165.77999, -21.080005] + ] + ] + }, + "type": "Feature", + "id": "NCL", + "properties": { "name": "New Caledonia", "id": "NCL", "centroid": [166.3, -22.17] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [2.154474, 11.94015], + [2.177108, 12.625018], + [1.024103, 12.851826], + [0.993046, 13.33575], + [0.429928, 13.988733], + [0.295646, 14.444235], + [0.374892, 14.928908], + [1.015783, 14.968182], + [1.385528, 15.323561], + [2.749993, 15.409525], + [3.638259, 15.56812], + [3.723422, 16.184284], + [4.27021, 16.852227], + [4.267419, 19.155265], + [5.677566, 19.601207], + [8.572893, 21.565661], + [11.999506, 23.471668], + [13.581425, 23.040506], + [14.143871, 22.491289], + [14.8513, 22.86295], + [15.096888, 21.308519], + [15.471077, 21.048457], + [15.487148, 20.730415], + [15.903247, 20.387619], + [15.685741, 19.95718], + [15.300441, 17.92795], + [15.247731, 16.627306], + [13.972202, 15.684366], + [13.540394, 14.367134], + [13.956699, 13.996691], + [13.954477, 13.353449], + [14.595781, 13.330427], + [14.495787, 12.859396], + [14.213531, 12.802035], + [14.181336, 12.483657], + [13.995353, 12.461565], + [13.318702, 13.556356], + [13.083987, 13.596147], + [12.302071, 13.037189], + [11.527803, 13.32898], + [10.989593, 13.387323], + [10.701032, 13.246918], + [10.114814, 13.277252], + [9.524928, 12.851102], + [9.014933, 12.826659], + [7.804671, 13.343527], + [7.330747, 13.098038], + [6.820442, 13.115091], + [6.445426, 13.492768], + [5.443058, 13.865924], + [4.368344, 13.747482], + [4.107946, 13.531216], + [3.967283, 12.956109], + [3.680634, 12.552903], + [3.61118, 11.660167], + [2.848643, 12.235636], + [2.490164, 12.233052], + [2.154474, 11.94015] + ] + ] + }, + "type": "Feature", + "id": "NER", + "properties": { "name": "Niger", "id": "NER", "centroid": [2.06, 13.27] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [8.500288, 4.771983], + [7.462108, 4.412108], + [7.082596, 4.464689], + [6.698072, 4.240594], + [5.898173, 4.262453], + [5.362805, 4.887971], + [5.033574, 5.611802], + [4.325607, 6.270651], + [3.57418, 6.2583], + [2.691702, 6.258817], + [2.749063, 7.870734], + [2.723793, 8.506845], + [2.912308, 9.137608], + [3.220352, 9.444153], + [3.705438, 10.06321], + [3.60007, 10.332186], + [3.797112, 10.734746], + [3.572216, 11.327939], + [3.61118, 11.660167], + [3.680634, 12.552903], + [3.967283, 12.956109], + [4.107946, 13.531216], + [4.368344, 13.747482], + [5.443058, 13.865924], + [6.445426, 13.492768], + [6.820442, 13.115091], + [7.330747, 13.098038], + [7.804671, 13.343527], + [9.014933, 12.826659], + [9.524928, 12.851102], + [10.114814, 13.277252], + [10.701032, 13.246918], + [10.989593, 13.387323], + [11.527803, 13.32898], + [12.302071, 13.037189], + [13.083987, 13.596147], + [13.318702, 13.556356], + [13.995353, 12.461565], + [14.181336, 12.483657], + [14.577178, 12.085361], + [14.468192, 11.904752], + [14.415379, 11.572369], + [13.57295, 10.798566], + [13.308676, 10.160362], + [13.1676, 9.640626], + [12.955468, 9.417772], + [12.753672, 8.717763], + [12.218872, 8.305824], + [12.063946, 7.799808], + [11.839309, 7.397042], + [11.745774, 6.981383], + [11.058788, 6.644427], + [10.497375, 7.055358], + [10.118277, 7.03877], + [9.522706, 6.453482], + [9.233163, 6.444491], + [8.757533, 5.479666], + [8.500288, 4.771983] + ] + ] + }, + "type": "Feature", + "id": "NGA", + "properties": { "name": "Nigeria", "id": "NGA", "centroid": [7.32, 9.05] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-85.71254, 11.088445], + [-86.058488, 11.403439], + [-86.52585, 11.806877], + [-86.745992, 12.143962], + [-87.167516, 12.458258], + [-87.668493, 12.90991], + [-87.557467, 13.064552], + [-87.392386, 12.914018], + [-87.316654, 12.984686], + [-87.005769, 13.025794], + [-86.880557, 13.254204], + [-86.733822, 13.263093], + [-86.755087, 13.754845], + [-86.520708, 13.778487], + [-86.312142, 13.771356], + [-86.096264, 14.038187], + [-85.801295, 13.836055], + [-85.698665, 13.960078], + [-85.514413, 14.079012], + [-85.165365, 14.35437], + [-85.148751, 14.560197], + [-85.052787, 14.551541], + [-84.924501, 14.790493], + [-84.820037, 14.819587], + [-84.649582, 14.666805], + [-84.449336, 14.621614], + [-84.228342, 14.748764], + [-83.975721, 14.749436], + [-83.628585, 14.880074], + [-83.489989, 15.016267], + [-83.147219, 14.995829], + [-83.233234, 14.899866], + [-83.284162, 14.676624], + [-83.182126, 14.310703], + [-83.4125, 13.970078], + [-83.519832, 13.567699], + [-83.552207, 13.127054], + [-83.498515, 12.869292], + [-83.473323, 12.419087], + [-83.626104, 12.32085], + [-83.719613, 11.893124], + [-83.650858, 11.629032], + [-83.85547, 11.373311], + [-83.808936, 11.103044], + [-83.655612, 10.938764], + [-83.895054, 10.726839], + [-84.190179, 10.79345], + [-84.355931, 10.999226], + [-84.673069, 11.082657], + [-84.903003, 10.952303], + [-85.561852, 11.217119], + [-85.71254, 11.088445] + ] + ] + }, + "type": "Feature", + "id": "NIC", + "properties": { "name": "Nicaragua", "id": "NIC", "centroid": [-86.2, 12.06] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [6.074183, 53.510403], + [6.90514, 53.482162], + [7.092053, 53.144043], + [6.84287, 52.22844], + [6.589397, 51.852029], + [5.988658, 51.851616], + [6.156658, 50.803721], + [5.606976, 51.037298], + [4.973991, 51.475024], + [4.047071, 51.267259], + [3.314971, 51.345755], + [3.830289, 51.620545], + [4.705997, 53.091798], + [6.074183, 53.510403] + ] + ] + }, + "type": "Feature", + "id": "NLD", + "properties": { "name": "Netherlands", "id": "NLD", "centroid": [4.54, 52.23] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [28.165547, 71.185474], + [31.293418, 70.453788], + [30.005435, 70.186259], + [31.101079, 69.55808], + [29.399581, 69.156916], + [28.59193, 69.064777], + [29.015573, 69.766491], + [27.732292, 70.164193], + [26.179622, 69.825299], + [25.689213, 69.092114], + [24.735679, 68.649557], + [23.66205, 68.891247], + [22.356238, 68.841741], + [21.244936, 69.370443], + [20.645593, 69.106247], + [20.025269, 69.065139], + [19.87856, 68.407194], + [17.993868, 68.567391], + [17.729182, 68.010552], + [16.768879, 68.013937], + [16.108712, 67.302456], + [15.108411, 66.193867], + [13.55569, 64.787028], + [13.919905, 64.445421], + [13.571916, 64.049114], + [12.579935, 64.066219], + [11.930569, 63.128318], + [11.992064, 61.800362], + [12.631147, 61.293572], + [12.300366, 60.117933], + [11.468272, 59.432393], + [11.027369, 58.856149], + [10.356557, 59.469807], + [8.382, 58.313288], + [7.048748, 58.078884], + [5.665835, 58.588155], + [5.308234, 59.663232], + [4.992078, 61.970998], + [5.9129, 62.614473], + [8.553411, 63.454008], + [10.527709, 64.486038], + [12.358347, 65.879726], + [14.761146, 67.810642], + [16.435927, 68.563205], + [19.184028, 69.817444], + [21.378416, 70.255169], + [23.023742, 70.202072], + [24.546543, 71.030497], + [26.37005, 70.986262], + [28.165547, 71.185474] + ] + ], + [ + [ + [24.72412, 77.85385], + [22.49032, 77.44493], + [20.72601, 77.67704], + [21.41611, 77.93504], + [20.8119, 78.25463], + [22.88426, 78.45494], + [23.28134, 78.07954], + [24.72412, 77.85385] + ] + ], + [ + [ + [18.25183, 79.70175], + [21.54383, 78.95611], + [19.02737, 78.5626], + [18.47172, 77.82669], + [17.59441, 77.63796], + [17.1182, 76.80941], + [15.91315, 76.77045], + [13.76259, 77.38035], + [14.66956, 77.73565], + [13.1706, 78.02493], + [11.22231, 78.8693], + [10.44453, 79.65239], + [13.17077, 80.01046], + [13.71852, 79.66039], + [15.14282, 79.67431], + [15.52255, 80.01608], + [16.99085, 80.05086], + [18.25183, 79.70175] + ] + ], + [ + [ + [25.447625, 80.40734], + [27.407506, 80.056406], + [25.924651, 79.517834], + [23.024466, 79.400012], + [20.075188, 79.566823], + [19.897266, 79.842362], + [18.462264, 79.85988], + [17.368015, 80.318896], + [20.455992, 80.598156], + [21.907945, 80.357679], + [22.919253, 80.657144], + [25.447625, 80.40734] + ] + ] + ] + }, + "type": "Feature", + "id": "NOR", + "properties": { "name": "Norway", "id": "NOR", "centroid": [10.45, 59.55] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [88.120441, 27.876542], + [88.043133, 27.445819], + [88.174804, 26.810405], + [88.060238, 26.414615], + [87.227472, 26.397898], + [86.024393, 26.630985], + [85.251779, 26.726198], + [84.675018, 27.234901], + [83.304249, 27.364506], + [81.999987, 27.925479], + [81.057203, 28.416095], + [80.088425, 28.79447], + [80.476721, 29.729865], + [81.111256, 30.183481], + [81.525804, 30.422717], + [82.327513, 30.115268], + [83.337115, 29.463732], + [83.898993, 29.320226], + [84.23458, 28.839894], + [85.011638, 28.642774], + [85.82332, 28.203576], + [86.954517, 27.974262], + [88.120441, 27.876542] + ] + ] + }, + "type": "Feature", + "id": "NPL", + "properties": { "name": "Nepal", "id": "NPL", "centroid": [85.2, 27.45] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [173.020375, -40.919052], + [173.247234, -41.331999], + [173.958405, -40.926701], + [174.247587, -41.349155], + [174.248517, -41.770008], + [173.876447, -42.233184], + [173.22274, -42.970038], + [172.711246, -43.372288], + [173.080113, -43.853344], + [172.308584, -43.865694], + [171.452925, -44.242519], + [171.185138, -44.897104], + [170.616697, -45.908929], + [169.831422, -46.355775], + [169.332331, -46.641235], + [168.411354, -46.619945], + [167.763745, -46.290197], + [166.676886, -46.219917], + [166.509144, -45.852705], + [167.046424, -45.110941], + [168.303763, -44.123973], + [168.949409, -43.935819], + [169.667815, -43.555326], + [170.52492, -43.031688], + [171.12509, -42.512754], + [171.569714, -41.767424], + [171.948709, -41.514417], + [172.097227, -40.956104], + [172.79858, -40.493962], + [173.020375, -40.919052] + ] + ], + [ + [ + [174.612009, -36.156397], + [175.336616, -37.209098], + [175.357596, -36.526194], + [175.808887, -36.798942], + [175.95849, -37.555382], + [176.763195, -37.881253], + [177.438813, -37.961248], + [178.010354, -37.579825], + [178.517094, -37.695373], + [178.274731, -38.582813], + [177.97046, -39.166343], + [177.206993, -39.145776], + [176.939981, -39.449736], + [177.032946, -39.879943], + [176.885824, -40.065978], + [176.508017, -40.604808], + [176.01244, -41.289624], + [175.239567, -41.688308], + [175.067898, -41.425895], + [174.650973, -41.281821], + [175.22763, -40.459236], + [174.900157, -39.908933], + [173.824047, -39.508854], + [173.852262, -39.146602], + [174.574802, -38.797683], + [174.743474, -38.027808], + [174.697017, -37.381129], + [174.292028, -36.711092], + [174.319004, -36.534824], + [173.840997, -36.121981], + [173.054171, -35.237125], + [172.636005, -34.529107], + [173.007042, -34.450662], + [173.551298, -35.006183], + [174.32939, -35.265496], + [174.612009, -36.156397] + ] + ] + ] + }, + "type": "Feature", + "id": "NZL", + "properties": { "name": "New Zealand", "id": "NZL", "centroid": [174.46, -41.19] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [58.861141, 21.114035], + [58.487986, 20.428986], + [58.034318, 20.481437], + [57.826373, 20.243002], + [57.665762, 19.736005], + [57.7887, 19.06757], + [57.694391, 18.94471], + [57.234264, 18.947991], + [56.609651, 18.574267], + [56.512189, 18.087113], + [56.283521, 17.876067], + [55.661492, 17.884128], + [55.269939, 17.632309], + [55.2749, 17.228354], + [54.791002, 16.950697], + [54.239253, 17.044981], + [53.570508, 16.707663], + [53.108573, 16.651051], + [52.782184, 17.349742], + [52.00001, 19.000003], + [54.999982, 19.999994], + [55.666659, 22.000001], + [55.208341, 22.70833], + [55.234489, 23.110993], + [55.525841, 23.524869], + [55.528632, 23.933604], + [55.981214, 24.130543], + [55.804119, 24.269604], + [55.886233, 24.920831], + [56.396847, 24.924732], + [56.84514, 24.241673], + [57.403453, 23.878594], + [58.136948, 23.747931], + [58.729211, 23.565668], + [59.180502, 22.992395], + [59.450098, 22.660271], + [59.80806, 22.533612], + [59.806148, 22.310525], + [59.442191, 21.714541], + [59.282408, 21.433886], + [58.861141, 21.114035] + ] + ], + [ + [ + [56.391421, 25.895991], + [56.261042, 25.714606], + [56.070821, 26.055464], + [56.362017, 26.395934], + [56.485679, 26.309118], + [56.391421, 25.895991] + ] + ] + ] + }, + "type": "Feature", + "id": "OMN", + "properties": { "name": "Oman", "id": "OMN", "centroid": [58.36, 23.37] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [75.158028, 37.133031], + [75.896897, 36.666806], + [76.192848, 35.898403], + [77.837451, 35.49401], + [76.871722, 34.653544], + [75.757061, 34.504923], + [74.240203, 34.748887], + [73.749948, 34.317699], + [74.104294, 33.441473], + [74.451559, 32.7649], + [75.258642, 32.271105], + [74.405929, 31.692639], + [74.42138, 30.979815], + [73.450638, 29.976413], + [72.823752, 28.961592], + [71.777666, 27.91318], + [70.616496, 27.989196], + [69.514393, 26.940966], + [70.168927, 26.491872], + [70.282873, 25.722229], + [70.844699, 25.215102], + [71.04324, 24.356524], + [68.842599, 24.359134], + [68.176645, 23.691965], + [67.443667, 23.944844], + [67.145442, 24.663611], + [66.372828, 25.425141], + [64.530408, 25.237039], + [62.905701, 25.218409], + [61.497363, 25.078237], + [61.874187, 26.239975], + [63.316632, 26.756532], + [63.233898, 27.217047], + [62.755426, 27.378923], + [62.72783, 28.259645], + [61.771868, 28.699334], + [61.369309, 29.303276], + [60.874248, 29.829239], + [62.549857, 29.318572], + [63.550261, 29.468331], + [64.148002, 29.340819], + [64.350419, 29.560031], + [65.046862, 29.472181], + [66.346473, 29.887943], + [66.381458, 30.738899], + [66.938891, 31.304911], + [67.683394, 31.303154], + [67.792689, 31.58293], + [68.556932, 31.71331], + [68.926677, 31.620189], + [69.317764, 31.901412], + [69.262522, 32.501944], + [69.687147, 33.105499], + [70.323594, 33.358533], + [69.930543, 34.02012], + [70.881803, 33.988856], + [71.156773, 34.348911], + [71.115019, 34.733126], + [71.613076, 35.153203], + [71.498768, 35.650563], + [71.262348, 36.074388], + [71.846292, 36.509942], + [72.920025, 36.720007], + [74.067552, 36.836176], + [74.575893, 37.020841], + [75.158028, 37.133031] + ] + ] + }, + "type": "Feature", + "id": "PAK", + "properties": { "name": "Pakistan", "id": "PAK", "centroid": [73.1, 33.4] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-77.881571, 7.223771], + [-78.214936, 7.512255], + [-78.429161, 8.052041], + [-78.182096, 8.319182], + [-78.435465, 8.387705], + [-78.622121, 8.718124], + [-79.120307, 8.996092], + [-79.557877, 8.932375], + [-79.760578, 8.584515], + [-80.164481, 8.333316], + [-80.382659, 8.298409], + [-80.480689, 8.090308], + [-80.00369, 7.547524], + [-80.276671, 7.419754], + [-80.421158, 7.271572], + [-80.886401, 7.220541], + [-81.059543, 7.817921], + [-81.189716, 7.647906], + [-81.519515, 7.70661], + [-81.721311, 8.108963], + [-82.131441, 8.175393], + [-82.390934, 8.292362], + [-82.820081, 8.290864], + [-82.850958, 8.073823], + [-82.965783, 8.225028], + [-82.913176, 8.423517], + [-82.829771, 8.626295], + [-82.868657, 8.807266], + [-82.719183, 8.925709], + [-82.927155, 9.07433], + [-82.932891, 9.476812], + [-82.546196, 9.566135], + [-82.187123, 9.207449], + [-82.207586, 8.995575], + [-81.808567, 8.950617], + [-81.714154, 9.031955], + [-81.439287, 8.786234], + [-80.947302, 8.858504], + [-80.521901, 9.111072], + [-79.9146, 9.312765], + [-79.573303, 9.61161], + [-79.021192, 9.552931], + [-79.05845, 9.454565], + [-78.500888, 9.420459], + [-78.055928, 9.24773], + [-77.729514, 8.946844], + [-77.353361, 8.670505], + [-77.474723, 8.524286], + [-77.242566, 7.935278], + [-77.431108, 7.638061], + [-77.753414, 7.70984], + [-77.881571, 7.223771] + ] + ] + }, + "type": "Feature", + "id": "PAN", + "properties": { "name": "Panama", "id": "PAN", "centroid": [-79.25, 9] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-69.590424, -17.580012], + [-69.858444, -18.092694], + [-70.372572, -18.347975], + [-71.37525, -17.773799], + [-71.462041, -17.363488], + [-73.44453, -16.359363], + [-75.237883, -15.265683], + [-76.009205, -14.649286], + [-76.423469, -13.823187], + [-76.259242, -13.535039], + [-77.106192, -12.222716], + [-78.092153, -10.377712], + [-79.036953, -8.386568], + [-79.44592, -7.930833], + [-79.760578, -7.194341], + [-80.537482, -6.541668], + [-81.249996, -6.136834], + [-80.926347, -5.690557], + [-81.410943, -4.736765], + [-81.09967, -4.036394], + [-80.302561, -3.404856], + [-80.184015, -3.821162], + [-80.469295, -4.059287], + [-80.442242, -4.425724], + [-80.028908, -4.346091], + [-79.624979, -4.454198], + [-79.205289, -4.959129], + [-78.639897, -4.547784], + [-78.450684, -3.873097], + [-77.837905, -3.003021], + [-76.635394, -2.608678], + [-75.544996, -1.56161], + [-75.233723, -0.911417], + [-75.373223, -0.152032], + [-75.106625, -0.057205], + [-74.441601, -0.53082], + [-74.122395, -1.002833], + [-73.659504, -1.260491], + [-73.070392, -2.308954], + [-72.325787, -2.434218], + [-71.774761, -2.16979], + [-71.413646, -2.342802], + [-70.813476, -2.256865], + [-70.047709, -2.725156], + [-70.692682, -3.742872], + [-70.394044, -3.766591], + [-69.893635, -4.298187], + [-70.794769, -4.251265], + [-70.928843, -4.401591], + [-71.748406, -4.593983], + [-72.891928, -5.274561], + [-72.964507, -5.741251], + [-73.219711, -6.089189], + [-73.120027, -6.629931], + [-73.724487, -6.918595], + [-73.723401, -7.340999], + [-73.987235, -7.52383], + [-73.571059, -8.424447], + [-73.015383, -9.032833], + [-73.226713, -9.462213], + [-72.563033, -9.520194], + [-72.184891, -10.053598], + [-71.302412, -10.079436], + [-70.481894, -9.490118], + [-70.548686, -11.009147], + [-70.093752, -11.123972], + [-69.529678, -10.951734], + [-68.66508, -12.5613], + [-68.88008, -12.899729], + [-68.929224, -13.602684], + [-68.948887, -14.453639], + [-69.339535, -14.953195], + [-69.160347, -15.323974], + [-69.389764, -15.660129], + [-68.959635, -16.500698], + [-69.590424, -17.580012] + ] + ] + }, + "type": "Feature", + "id": "PER", + "properties": { "name": "Peru", "id": "PER", "centroid": [-77, -12] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [126.376814, 8.414706], + [126.478513, 7.750354], + [126.537424, 7.189381], + [126.196773, 6.274294], + [125.831421, 7.293715], + [125.363852, 6.786485], + [125.683161, 6.049657], + [125.396512, 5.581003], + [124.219788, 6.161355], + [123.93872, 6.885136], + [124.243662, 7.36061], + [123.610212, 7.833527], + [123.296071, 7.418876], + [122.825506, 7.457375], + [122.085499, 6.899424], + [121.919928, 7.192119], + [122.312359, 8.034962], + [122.942398, 8.316237], + [123.487688, 8.69301], + [123.841154, 8.240324], + [124.60147, 8.514158], + [124.764612, 8.960409], + [125.471391, 8.986997], + [125.412118, 9.760335], + [126.222714, 9.286074], + [126.306637, 8.782487], + [126.376814, 8.414706] + ] + ], + [ + [ + [123.982438, 10.278779], + [123.623183, 9.950091], + [123.309921, 9.318269], + [122.995883, 9.022189], + [122.380055, 9.713361], + [122.586089, 9.981045], + [122.837081, 10.261157], + [122.947411, 10.881868], + [123.49885, 10.940624], + [123.337774, 10.267384], + [124.077936, 11.232726], + [123.982438, 10.278779] + ] + ], + [ + [ + [118.504581, 9.316383], + [117.174275, 8.3675], + [117.664477, 9.066889], + [118.386914, 9.6845], + [118.987342, 10.376292], + [119.511496, 11.369668], + [119.689677, 10.554291], + [119.029458, 10.003653], + [118.504581, 9.316383] + ] + ], + [ + [ + [121.883548, 11.891755], + [122.483821, 11.582187], + [123.120217, 11.58366], + [123.100838, 11.165934], + [122.637714, 10.741308], + [122.00261, 10.441017], + [121.967367, 10.905691], + [122.03837, 11.415841], + [121.883548, 11.891755] + ] + ], + [ + [ + [125.502552, 12.162695], + [125.783465, 11.046122], + [125.011884, 11.311455], + [125.032761, 10.975816], + [125.277449, 10.358722], + [124.801819, 10.134679], + [124.760168, 10.837995], + [124.459101, 10.88993], + [124.302522, 11.495371], + [124.891013, 11.415583], + [124.87799, 11.79419], + [124.266762, 12.557761], + [125.227116, 12.535721], + [125.502552, 12.162695] + ] + ], + [ + [ + [121.527394, 13.06959], + [121.26219, 12.20556], + [120.833896, 12.704496], + [120.323436, 13.466413], + [121.180128, 13.429697], + [121.527394, 13.06959] + ] + ], + [ + [ + [121.321308, 18.504065], + [121.937601, 18.218552], + [122.246006, 18.47895], + [122.336957, 18.224883], + [122.174279, 17.810283], + [122.515654, 17.093505], + [122.252311, 16.262444], + [121.662786, 15.931018], + [121.50507, 15.124814], + [121.728829, 14.328376], + [122.258925, 14.218202], + [122.701276, 14.336541], + [123.950295, 13.782131], + [123.855107, 13.237771], + [124.181289, 12.997527], + [124.077419, 12.536677], + [123.298035, 13.027526], + [122.928652, 13.55292], + [122.671355, 13.185836], + [122.03465, 13.784482], + [121.126385, 13.636687], + [120.628637, 13.857656], + [120.679384, 14.271016], + [120.991819, 14.525393], + [120.693336, 14.756671], + [120.564145, 14.396279], + [120.070429, 14.970869], + [119.920929, 15.406347], + [119.883773, 16.363704], + [120.286488, 16.034629], + [120.390047, 17.599081], + [120.715867, 18.505227], + [121.321308, 18.504065] + ] + ] + ] + }, + "type": "Feature", + "id": "PHL", + "properties": { "name": "Philippines", "id": "PHL", "centroid": [121.03, 14.4] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [155.880026, -6.819997], + [155.599991, -6.919991], + [155.166994, -6.535931], + [154.729192, -5.900828], + [154.514114, -5.139118], + [154.652504, -5.042431], + [154.759991, -5.339984], + [155.062918, -5.566792], + [155.547746, -6.200655], + [156.019965, -6.540014], + [155.880026, -6.819997] + ] + ], + [ + [ + [151.982796, -5.478063], + [151.459107, -5.56028], + [151.30139, -5.840728], + [150.754447, -6.083763], + [150.241197, -6.317754], + [149.709963, -6.316513], + [148.890065, -6.02604], + [148.318937, -5.747142], + [148.401826, -5.437756], + [149.298412, -5.583742], + [149.845562, -5.505503], + [149.99625, -5.026101], + [150.139756, -5.001348], + [150.236908, -5.53222], + [150.807467, -5.455842], + [151.089672, -5.113693], + [151.647881, -4.757074], + [151.537862, -4.167807], + [152.136792, -4.14879], + [152.338743, -4.312966], + [152.318693, -4.867661], + [151.982796, -5.478063] + ] + ], + [ + [ + [147.191874, -7.388024], + [148.084636, -8.044108], + [148.734105, -9.104664], + [149.306835, -9.071436], + [149.266631, -9.514406], + [150.038728, -9.684318], + [149.738798, -9.872937], + [150.801628, -10.293687], + [150.690575, -10.582713], + [150.028393, -10.652476], + [149.78231, -10.393267], + [148.923138, -10.280923], + [147.913018, -10.130441], + [147.135443, -9.492444], + [146.567881, -8.942555], + [146.048481, -8.067414], + [144.744168, -7.630128], + [143.897088, -7.91533], + [143.286376, -8.245491], + [143.413913, -8.983069], + [142.628431, -9.326821], + [142.068259, -9.159596], + [141.033852, -9.117893], + [141.017057, -5.859022], + [141.00021, -2.600151], + [142.735247, -3.289153], + [144.583971, -3.861418], + [145.27318, -4.373738], + [145.829786, -4.876498], + [145.981922, -5.465609], + [147.648073, -6.083659], + [147.891108, -6.614015], + [146.970905, -6.721657], + [147.191874, -7.388024] + ] + ], + [ + [ + [153.140038, -4.499983], + [152.827292, -4.766427], + [152.638673, -4.176127], + [152.406026, -3.789743], + [151.953237, -3.462062], + [151.384279, -3.035422], + [150.66205, -2.741486], + [150.939965, -2.500002], + [151.479984, -2.779985], + [151.820015, -2.999972], + [152.239989, -3.240009], + [152.640017, -3.659983], + [153.019994, -3.980015], + [153.140038, -4.499983] + ] + ] + ] + }, + "type": "Feature", + "id": "PNG", + "properties": { "name": "Papua New Guinea", "id": "PNG", "centroid": [147.08, -9.24] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [15.016996, 51.106674], + [14.607098, 51.745188], + [14.685026, 52.089947], + [14.4376, 52.62485], + [14.074521, 52.981263], + [14.353315, 53.248171], + [14.119686, 53.757029], + [14.8029, 54.050706], + [16.363477, 54.513159], + [17.622832, 54.851536], + [18.620859, 54.682606], + [18.696255, 54.438719], + [19.66064, 54.426084], + [20.892245, 54.312525], + [22.731099, 54.327537], + [23.243987, 54.220567], + [23.484128, 53.912498], + [23.527536, 53.470122], + [23.804935, 53.089731], + [23.799199, 52.691099], + [23.199494, 52.486977], + [23.508002, 52.023647], + [23.527071, 51.578454], + [24.029986, 50.705407], + [23.922757, 50.424881], + [23.426508, 50.308506], + [22.51845, 49.476774], + [22.776419, 49.027395], + [22.558138, 49.085738], + [21.607808, 49.470107], + [20.887955, 49.328772], + [20.415839, 49.431453], + [19.825023, 49.217125], + [19.320713, 49.571574], + [18.909575, 49.435846], + [18.853144, 49.49623], + [18.392914, 49.988629], + [17.649445, 50.049038], + [17.554567, 50.362146], + [16.868769, 50.473974], + [16.719476, 50.215747], + [16.176253, 50.422607], + [16.238627, 50.697733], + [15.490972, 50.78473], + [15.016996, 51.106674] + ] + ] + }, + "type": "Feature", + "id": "POL", + "properties": { "name": "Poland", "id": "POL", "centroid": [21, 52.13] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-66.282434, 18.514762], + [-65.771303, 18.426679], + [-65.591004, 18.228035], + [-65.847164, 17.975906], + [-66.599934, 17.981823], + [-67.184162, 17.946553], + [-67.242428, 18.37446], + [-67.100679, 18.520601], + [-66.282434, 18.514762] + ] + ] + }, + "type": "Feature", + "id": "PRI", + "properties": { "name": "Puerto Rico", "id": "PRI", "centroid": [-66.07, 18.28] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [130.640016, 42.395009], + [130.780007, 42.220007], + [130.400031, 42.280004], + [129.965949, 41.941368], + [129.667362, 41.601104], + [129.705189, 40.882828], + [129.188115, 40.661808], + [129.0104, 40.485436], + [128.633368, 40.189847], + [127.967414, 40.025413], + [127.533436, 39.75685], + [127.50212, 39.323931], + [127.385434, 39.213472], + [127.783343, 39.050898], + [128.349716, 38.612243], + [128.205746, 38.370397], + [127.780035, 38.304536], + [127.073309, 38.256115], + [126.68372, 37.804773], + [126.237339, 37.840378], + [126.174759, 37.749686], + [125.689104, 37.94001], + [125.568439, 37.752089], + [125.27533, 37.669071], + [125.240087, 37.857224], + [124.981033, 37.948821], + [124.712161, 38.108346], + [124.985994, 38.548474], + [125.221949, 38.665857], + [125.132859, 38.848559], + [125.38659, 39.387958], + [125.321116, 39.551385], + [124.737482, 39.660344], + [124.265625, 39.928493], + [125.079942, 40.569824], + [126.182045, 41.107336], + [126.869083, 41.816569], + [127.343783, 41.503152], + [128.208433, 41.466772], + [128.052215, 41.994285], + [129.596669, 42.424982], + [129.994267, 42.985387], + [130.640016, 42.395009] + ] + ] + }, + "type": "Feature", + "id": "PRK", + "properties": { "name": "North Korea", "id": "PRK", "centroid": [125.44, 39.02] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-9.034818, 41.880571], + [-8.671946, 42.134689], + [-8.263857, 42.280469], + [-8.013175, 41.790886], + [-7.422513, 41.792075], + [-7.251309, 41.918346], + [-6.668606, 41.883387], + [-6.389088, 41.381815], + [-6.851127, 41.111083], + [-6.86402, 40.330872], + [-7.026413, 40.184524], + [-7.066592, 39.711892], + [-7.498632, 39.629571], + [-7.098037, 39.030073], + [-7.374092, 38.373059], + [-7.029281, 38.075764], + [-7.166508, 37.803894], + [-7.537105, 37.428904], + [-7.453726, 37.097788], + [-7.855613, 36.838269], + [-8.382816, 36.97888], + [-8.898857, 36.868809], + [-8.746101, 37.651346], + [-8.839998, 38.266243], + [-9.287464, 38.358486], + [-9.526571, 38.737429], + [-9.446989, 39.392066], + [-9.048305, 39.755093], + [-8.977353, 40.159306], + [-8.768684, 40.760639], + [-8.790853, 41.184334], + [-8.990789, 41.543459], + [-9.034818, 41.880571] + ] + ] + }, + "type": "Feature", + "id": "PRT", + "properties": { "name": "Portugal", "id": "PRT", "centroid": [-9.1, 38.42] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-62.685057, -22.249029], + [-62.291179, -21.051635], + [-62.265961, -20.513735], + [-61.786326, -19.633737], + [-60.043565, -19.342747], + [-59.115042, -19.356906], + [-58.183471, -19.868399], + [-58.166392, -20.176701], + [-57.870674, -20.732688], + [-57.937156, -22.090176], + [-56.88151, -22.282154], + [-56.473317, -22.0863], + [-55.797958, -22.35693], + [-55.610683, -22.655619], + [-55.517639, -23.571998], + [-55.400747, -23.956935], + [-55.027902, -24.001274], + [-54.652834, -23.839578], + [-54.29296, -24.021014], + [-54.293476, -24.5708], + [-54.428946, -25.162185], + [-54.625291, -25.739255], + [-54.788795, -26.621786], + [-55.695846, -27.387837], + [-56.486702, -27.548499], + [-57.60976, -27.395899], + [-58.618174, -27.123719], + [-57.63366, -25.603657], + [-57.777217, -25.16234], + [-58.807128, -24.771459], + [-60.028966, -24.032796], + [-60.846565, -23.880713], + [-62.685057, -22.249029] + ] + ] + }, + "type": "Feature", + "id": "PRY", + "properties": { "name": "Paraguay", "id": "PRY", "centroid": [-57.38, -25.18] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [50.810108, 24.754743], + [50.743911, 25.482424], + [51.013352, 26.006992], + [51.286462, 26.114582], + [51.589079, 25.801113], + [51.6067, 25.21567], + [51.389608, 24.627386], + [51.112415, 24.556331], + [50.810108, 24.754743] + ] + ] + }, + "type": "Feature", + "id": "QAT", + "properties": { "name": "Qatar", "id": "QAT", "centroid": [51.35, 25.15] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [22.710531, 47.882194], + [23.142236, 48.096341], + [23.760958, 47.985598], + [24.402056, 47.981878], + [24.866317, 47.737526], + [25.207743, 47.891056], + [25.945941, 47.987149], + [26.19745, 48.220881], + [26.619337, 48.220726], + [26.924176, 48.123264], + [27.233873, 47.826771], + [27.551166, 47.405117], + [28.12803, 46.810476], + [28.160018, 46.371563], + [28.054443, 45.944586], + [28.233554, 45.488283], + [28.679779, 45.304031], + [29.149725, 45.464925], + [29.603289, 45.293308], + [29.626543, 45.035391], + [29.141612, 44.82021], + [28.837858, 44.913874], + [28.558081, 43.707462], + [27.970107, 43.812468], + [27.2424, 44.175986], + [26.065159, 43.943494], + [25.569272, 43.688445], + [24.100679, 43.741051], + [23.332302, 43.897011], + [22.944832, 43.823785], + [22.65715, 44.234923], + [22.474008, 44.409228], + [22.705726, 44.578003], + [22.459022, 44.702517], + [22.145088, 44.478422], + [21.562023, 44.768947], + [21.483526, 45.18117], + [20.874313, 45.416375], + [20.762175, 45.734573], + [20.220192, 46.127469], + [21.021952, 46.316088], + [21.626515, 46.994238], + [22.099768, 47.672439], + [22.710531, 47.882194] + ] + ] + }, + "type": "Feature", + "id": "ROU", + "properties": { "name": "Romania", "id": "ROU", "centroid": [26.1, 44.27] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [143.648007, 50.7476], + [144.654148, 48.976391], + [143.173928, 49.306551], + [142.558668, 47.861575], + [143.533492, 46.836728], + [143.505277, 46.137908], + [142.747701, 46.740765], + [142.09203, 45.966755], + [141.906925, 46.805929], + [142.018443, 47.780133], + [141.904445, 48.859189], + [142.1358, 49.615163], + [142.179983, 50.952342], + [141.594076, 51.935435], + [141.682546, 53.301966], + [142.606934, 53.762145], + [142.209749, 54.225476], + [142.654786, 54.365881], + [142.914616, 53.704578], + [143.260848, 52.74076], + [143.235268, 51.75666], + [143.648007, 50.7476] + ] + ], + [ + [ + [22.731099, 54.327537], + [20.892245, 54.312525], + [19.66064, 54.426084], + [19.888481, 54.86616], + [21.268449, 55.190482], + [22.315724, 55.015299], + [22.757764, 54.856574], + [22.651052, 54.582741], + [22.731099, 54.327537] + ] + ], + [ + [ + [-175.01425, 66.58435], + [-174.33983, 66.33556], + [-174.57182, 67.06219], + [-171.85731, 66.91308], + [-169.89958, 65.97724], + [-170.89107, 65.54139], + [-172.53025, 65.43791], + [-172.555, 64.46079], + [-172.95533, 64.25269], + [-173.89184, 64.2826], + [-174.65392, 64.63125], + [-175.98353, 64.92288], + [-176.20716, 65.35667], + [-177.22266, 65.52024], + [-178.35993, 65.39052], + [-178.90332, 65.74044], + [-178.68611, 66.11211], + [-179.88377, 65.87456], + [-179.43268, 65.40411], + [-180, 64.979709], + [-180, 68.963636], + [-177.55, 68.2], + [-174.92825, 67.20589], + [-175.01425, 66.58435] + ] + ], + [ + [ + [180, 70.832199], + [178.903425, 70.78114], + [178.7253, 71.0988], + [180, 71.515714], + [180, 70.832199] + ] + ], + [ + [ + [-178.69378, 70.89302], + [-180, 70.832199], + [-180, 71.515714], + [-179.871875, 71.55762], + [-179.02433, 71.55553], + [-177.577945, 71.26948], + [-177.663575, 71.13277], + [-178.69378, 70.89302] + ] + ], + [ + [ + [143.60385, 73.21244], + [142.08763, 73.20544], + [140.038155, 73.31692], + [139.86312, 73.36983], + [140.81171, 73.76506], + [142.06207, 73.85758], + [143.48283, 73.47525], + [143.60385, 73.21244] + ] + ], + [ + [ + [150.73167, 75.08406], + [149.575925, 74.68892], + [147.977465, 74.778355], + [146.11919, 75.17298], + [146.358485, 75.49682], + [148.22223, 75.345845], + [150.73167, 75.08406] + ] + ], + [ + [ + [145.086285, 75.562625], + [144.3, 74.82], + [140.61381, 74.84768], + [138.95544, 74.61148], + [136.97439, 75.26167], + [137.51176, 75.94917], + [138.831075, 76.13676], + [141.471615, 76.09289], + [145.086285, 75.562625] + ] + ], + [ + [ + [57.535693, 70.720464], + [56.944979, 70.632743], + [53.677375, 70.762658], + [53.412017, 71.206662], + [51.601895, 71.474759], + [51.455754, 72.014881], + [52.478275, 72.229442], + [52.444169, 72.774731], + [54.427614, 73.627548], + [53.50829, 73.749814], + [55.902459, 74.627486], + [55.631933, 75.081412], + [57.868644, 75.60939], + [61.170044, 76.251883], + [64.498368, 76.439055], + [66.210977, 76.809782], + [68.15706, 76.939697], + [68.852211, 76.544811], + [68.180573, 76.233642], + [64.637326, 75.737755], + [61.583508, 75.260885], + [58.477082, 74.309056], + [56.986786, 73.333044], + [55.419336, 72.371268], + [55.622838, 71.540595], + [57.535693, 70.720464] + ] + ], + [ + [ + [106.97013, 76.97419], + [107.24, 76.48], + [108.1538, 76.72335], + [111.07726, 76.71], + [113.33151, 76.22224], + [114.13417, 75.84764], + [113.88539, 75.32779], + [112.77918, 75.03186], + [110.15125, 74.47673], + [109.4, 74.18], + [110.64, 74.04], + [112.11919, 73.78774], + [113.01954, 73.97693], + [113.52958, 73.33505], + [113.96881, 73.59488], + [115.56782, 73.75285], + [118.77633, 73.58772], + [119.02, 73.12], + [123.20066, 72.97122], + [123.25777, 73.73503], + [125.38, 73.56], + [126.97644, 73.56549], + [128.59126, 73.03871], + [129.05157, 72.39872], + [128.46, 71.98], + [129.71599, 71.19304], + [131.28858, 70.78699], + [132.2535, 71.8363], + [133.85766, 71.38642], + [135.56193, 71.65525], + [137.49755, 71.34763], + [138.23409, 71.62803], + [139.86983, 71.48783], + [139.14791, 72.41619], + [140.46817, 72.84941], + [149.5, 72.2], + [150.35118, 71.60643], + [152.9689, 70.84222], + [157.00688, 71.03141], + [158.99779, 70.86672], + [159.83031, 70.45324], + [159.70866, 69.72198], + [160.94053, 69.43728], + [162.27907, 69.64204], + [164.05248, 69.66823], + [165.94037, 69.47199], + [167.83567, 69.58269], + [169.57763, 68.6938], + [170.81688, 69.01363], + [170.0082, 69.65276], + [170.45345, 70.09703], + [173.64391, 69.81743], + [175.72403, 69.87725], + [178.6, 69.4], + [180, 68.963636], + [180, 64.979709], + [179.99281, 64.97433], + [178.7072, 64.53493], + [177.41128, 64.60821], + [178.313, 64.07593], + [178.90825, 63.25197], + [179.37034, 62.98262], + [179.48636, 62.56894], + [179.22825, 62.3041], + [177.3643, 62.5219], + [174.56929, 61.76915], + [173.68013, 61.65261], + [172.15, 60.95], + [170.6985, 60.33618], + [170.33085, 59.88177], + [168.90046, 60.57355], + [166.29498, 59.78855], + [165.84, 60.16], + [164.87674, 59.7316], + [163.53929, 59.86871], + [163.21711, 59.21101], + [162.01733, 58.24328], + [162.05297, 57.83912], + [163.19191, 57.61503], + [163.05794, 56.15924], + [162.12958, 56.12219], + [161.70146, 55.28568], + [162.11749, 54.85514], + [160.36877, 54.34433], + [160.02173, 53.20257], + [158.53094, 52.95868], + [158.23118, 51.94269], + [156.78979, 51.01105], + [156.42, 51.7], + [155.99182, 53.15895], + [155.43366, 55.38103], + [155.91442, 56.76792], + [156.75815, 57.3647], + [156.81035, 57.83204], + [158.36433, 58.05575], + [160.15064, 59.31477], + [161.87204, 60.343], + [163.66969, 61.1409], + [164.47355, 62.55061], + [163.25842, 62.46627], + [162.65791, 61.6425], + [160.12148, 60.54423], + [159.30232, 61.77396], + [156.72068, 61.43442], + [154.21806, 59.75818], + [155.04375, 59.14495], + [152.81185, 58.88385], + [151.26573, 58.78089], + [151.33815, 59.50396], + [149.78371, 59.65573], + [148.54481, 59.16448], + [145.48722, 59.33637], + [142.19782, 59.03998], + [138.95848, 57.08805], + [135.12619, 54.72959], + [136.70171, 54.60355], + [137.19342, 53.97732], + [138.1647, 53.75501], + [138.80463, 54.25455], + [139.90151, 54.18968], + [141.34531, 53.08957], + [141.37923, 52.23877], + [140.59742, 51.23967], + [140.51308, 50.04553], + [140.06193, 48.44671], + [138.55472, 46.99965], + [138.21971, 46.30795], + [136.86232, 45.1435], + [135.51535, 43.989], + [134.86939, 43.39821], + [133.53687, 42.81147], + [132.90627, 42.79849], + [132.27807, 43.28456], + [130.93587, 42.55274], + [130.78, 42.22], + [130.64, 42.395], + [130.633866, 42.903015], + [131.144688, 42.92999], + [131.288555, 44.11152], + [131.02519, 44.96796], + [131.883454, 45.321162], + [133.09712, 45.14409], + [133.769644, 46.116927], + [134.11235, 47.21248], + [134.50081, 47.57845], + [135.026311, 48.47823], + [133.373596, 48.183442], + [132.50669, 47.78896], + [130.98726, 47.79013], + [130.582293, 48.729687], + [129.397818, 49.4406], + [127.6574, 49.76027], + [127.287456, 50.739797], + [126.939157, 51.353894], + [126.564399, 51.784255], + [125.946349, 52.792799], + [125.068211, 53.161045], + [123.57147, 53.4588], + [122.245748, 53.431726], + [121.003085, 53.251401], + [120.177089, 52.753886], + [120.725789, 52.516226], + [120.7382, 51.96411], + [120.18208, 51.64355], + [119.27939, 50.58292], + [119.288461, 50.142883], + [117.879244, 49.510983], + [116.678801, 49.888531], + [115.485695, 49.805177], + [114.96211, 50.140247], + [114.362456, 50.248303], + [112.89774, 49.543565], + [111.581231, 49.377968], + [110.662011, 49.130128], + [109.402449, 49.292961], + [108.475167, 49.282548], + [107.868176, 49.793705], + [106.888804, 50.274296], + [105.886591, 50.406019], + [104.62158, 50.27532], + [103.676545, 50.089966], + [102.25589, 50.51056], + [102.06521, 51.25991], + [100.88948, 51.516856], + [99.981732, 51.634006], + [98.861491, 52.047366], + [97.82574, 51.010995], + [98.231762, 50.422401], + [97.25976, 49.72605], + [95.81402, 49.97746], + [94.815949, 50.013433], + [94.147566, 50.480537], + [93.10421, 50.49529], + [92.234712, 50.802171], + [90.713667, 50.331812], + [88.805567, 49.470521], + [87.751264, 49.297198], + [87.35997, 49.214981], + [86.829357, 49.826675], + [85.54127, 49.692859], + [85.11556, 50.117303], + [84.416377, 50.3114], + [83.935115, 50.889246], + [83.383004, 51.069183], + [81.945986, 50.812196], + [80.568447, 51.388336], + [80.03556, 50.864751], + [77.800916, 53.404415], + [76.525179, 54.177003], + [76.8911, 54.490524], + [74.38482, 53.54685], + [73.425679, 53.48981], + [73.508516, 54.035617], + [72.22415, 54.376655], + [71.180131, 54.133285], + [70.865267, 55.169734], + [69.068167, 55.38525], + [68.1691, 54.970392], + [65.66687, 54.60125], + [65.178534, 54.354228], + [61.4366, 54.00625], + [60.978066, 53.664993], + [61.699986, 52.979996], + [60.739993, 52.719986], + [60.927269, 52.447548], + [59.967534, 51.96042], + [61.588003, 51.272659], + [61.337424, 50.79907], + [59.932807, 50.842194], + [59.642282, 50.545442], + [58.36332, 51.06364], + [56.77798, 51.04355], + [55.71694, 50.62171], + [54.532878, 51.02624], + [52.328724, 51.718652], + [50.766648, 51.692762], + [48.702382, 50.605128], + [48.577841, 49.87476], + [47.54948, 50.454698], + [46.751596, 49.356006], + [47.043672, 49.152039], + [46.466446, 48.394152], + [47.31524, 47.71585], + [48.05725, 47.74377], + [48.694734, 47.075628], + [48.59325, 46.56104], + [49.10116, 46.39933], + [48.64541, 45.80629], + [47.67591, 45.64149], + [46.68201, 44.6092], + [47.59094, 43.66016], + [47.49252, 42.98658], + [48.58437, 41.80888], + [47.987283, 41.405819], + [47.815666, 41.151416], + [47.373315, 41.219732], + [46.686071, 41.827137], + [46.404951, 41.860675], + [45.7764, 42.09244], + [45.470279, 42.502781], + [44.537623, 42.711993], + [43.93121, 42.55496], + [43.75599, 42.74083], + [42.3944, 43.2203], + [40.92219, 43.38215], + [40.076965, 43.553104], + [39.955009, 43.434998], + [38.68, 44.28], + [37.53912, 44.65721], + [36.67546, 45.24469], + [37.40317, 45.40451], + [38.23295, 46.24087], + [37.67372, 46.63657], + [39.14767, 47.04475], + [39.1212, 47.26336], + [38.223538, 47.10219], + [38.255112, 47.5464], + [38.77057, 47.82562], + [39.738278, 47.898937], + [39.89562, 48.23241], + [39.67465, 48.78382], + [40.080789, 49.30743], + [40.06904, 49.60105], + [38.594988, 49.926462], + [38.010631, 49.915662], + [37.39346, 50.383953], + [36.626168, 50.225591], + [35.356116, 50.577197], + [35.37791, 50.77394], + [35.022183, 51.207572], + [34.224816, 51.255993], + [34.141978, 51.566413], + [34.391731, 51.768882], + [33.7527, 52.335075], + [32.715761, 52.238465], + [32.412058, 52.288695], + [32.15944, 52.06125], + [31.78597, 52.10168], + [31.540018, 52.742052], + [31.305201, 53.073996], + [31.49764, 53.16743], + [32.304519, 53.132726], + [32.693643, 53.351421], + [32.405599, 53.618045], + [31.731273, 53.794029], + [31.791424, 53.974639], + [31.384472, 54.157056], + [30.757534, 54.811771], + [30.971836, 55.081548], + [30.873909, 55.550976], + [29.896294, 55.789463], + [29.371572, 55.670091], + [29.229513, 55.918344], + [28.176709, 56.16913], + [27.855282, 56.759326], + [27.770016, 57.244258], + [27.288185, 57.474528], + [27.716686, 57.791899], + [27.42015, 58.72457], + [28.131699, 59.300825], + [27.98112, 59.47537], + [29.1177, 60.02805], + [28.07, 60.50352], + [30.211107, 61.780028], + [31.139991, 62.357693], + [31.516092, 62.867687], + [30.035872, 63.552814], + [30.444685, 64.204453], + [29.54443, 64.948672], + [30.21765, 65.80598], + [29.054589, 66.944286], + [29.977426, 67.698297], + [28.445944, 68.364613], + [28.59193, 69.064777], + [29.39955, 69.15692], + [31.10108, 69.55811], + [32.13272, 69.90595], + [33.77547, 69.30142], + [36.51396, 69.06342], + [40.29234, 67.9324], + [41.05987, 67.45713], + [41.12595, 66.79158], + [40.01583, 66.26618], + [38.38295, 65.99953], + [33.91871, 66.75961], + [33.18444, 66.63253], + [34.81477, 65.90015], + [34.878574, 65.436213], + [34.94391, 64.41437], + [36.23129, 64.10945], + [37.01273, 63.84983], + [37.14197, 64.33471], + [36.539579, 64.76446], + [37.17604, 65.14322], + [39.59345, 64.52079], + [40.4356, 64.76446], + [39.7626, 65.49682], + [42.09309, 66.47623], + [43.01604, 66.41858], + [43.94975, 66.06908], + [44.53226, 66.75634], + [43.69839, 67.35245], + [44.18795, 67.95051], + [43.45282, 68.57079], + [46.25, 68.25], + [46.82134, 67.68997], + [45.55517, 67.56652], + [45.56202, 67.01005], + [46.34915, 66.66767], + [47.89416, 66.88455], + [48.13876, 67.52238], + [50.22766, 67.99867], + [53.71743, 68.85738], + [54.47171, 68.80815], + [53.48582, 68.20131], + [54.72628, 68.09702], + [55.44268, 68.43866], + [57.31702, 68.46628], + [58.802, 68.88082], + [59.94142, 68.27844], + [61.07784, 68.94069], + [60.03, 69.52], + [60.55, 69.85], + [63.504, 69.54739], + [64.888115, 69.234835], + [68.51216, 68.09233], + [69.18068, 68.61563], + [68.16444, 69.14436], + [68.13522, 69.35649], + [66.93008, 69.45461], + [67.25976, 69.92873], + [66.72492, 70.70889], + [66.69466, 71.02897], + [68.54006, 71.9345], + [69.19636, 72.84336], + [69.94, 73.04], + [72.58754, 72.77629], + [72.79603, 72.22006], + [71.84811, 71.40898], + [72.47011, 71.09019], + [72.79188, 70.39114], + [72.5647, 69.02085], + [73.66787, 68.4079], + [73.2387, 67.7404], + [71.28, 66.32], + [72.42301, 66.17267], + [72.82077, 66.53267], + [73.92099, 66.78946], + [74.18651, 67.28429], + [75.052, 67.76047], + [74.46926, 68.32899], + [74.93584, 68.98918], + [73.84236, 69.07146], + [73.60187, 69.62763], + [74.3998, 70.63175], + [73.1011, 71.44717], + [74.89082, 72.12119], + [74.65926, 72.83227], + [75.15801, 72.85497], + [75.68351, 72.30056], + [75.28898, 71.33556], + [76.35911, 71.15287], + [75.90313, 71.87401], + [77.57665, 72.26717], + [79.65202, 72.32011], + [81.5, 71.75], + [80.61071, 72.58285], + [80.51109, 73.6482], + [82.25, 73.85], + [84.65526, 73.80591], + [86.8223, 73.93688], + [86.00956, 74.45967], + [87.16682, 75.11643], + [88.31571, 75.14393], + [90.26, 75.64], + [92.90058, 75.77333], + [93.23421, 76.0472], + [95.86, 76.14], + [96.67821, 75.91548], + [98.92254, 76.44689], + [100.75967, 76.43028], + [101.03532, 76.86189], + [101.99084, 77.28754], + [104.3516, 77.69792], + [106.06664, 77.37389], + [104.705, 77.1274], + [106.97013, 76.97419] + ] + ], + [ + [ + [105.07547, 78.30689], + [99.43814, 77.921], + [101.2649, 79.23399], + [102.08635, 79.34641], + [102.837815, 79.28129], + [105.37243, 78.71334], + [105.07547, 78.30689] + ] + ], + [ + [ + [51.136187, 80.54728], + [49.793685, 80.415428], + [48.894411, 80.339567], + [48.754937, 80.175468], + [47.586119, 80.010181], + [46.502826, 80.247247], + [47.072455, 80.559424], + [44.846958, 80.58981], + [46.799139, 80.771918], + [48.318477, 80.78401], + [48.522806, 80.514569], + [49.09719, 80.753986], + [50.039768, 80.918885], + [51.522933, 80.699726], + [51.136187, 80.54728] + ] + ], + [ + [ + [99.93976, 78.88094], + [97.75794, 78.7562], + [94.97259, 79.044745], + [93.31288, 79.4265], + [92.5454, 80.14379], + [91.18107, 80.34146], + [93.77766, 81.0246], + [95.940895, 81.2504], + [97.88385, 80.746975], + [100.186655, 79.780135], + [99.93976, 78.88094] + ] + ] + ] + }, + "type": "Feature", + "id": "RUS", + "properties": { "name": "Russia", "id": "RUS", "centroid": [37.35, 55.45] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [30.419105, -1.134659], + [30.816135, -1.698914], + [30.758309, -2.28725], + [30.469696, -2.413858], + [29.938359, -2.348487], + [29.632176, -2.917858], + [29.024926, -2.839258], + [29.117479, -2.292211], + [29.254835, -2.21511], + [29.291887, -1.620056], + [29.579466, -1.341313], + [29.821519, -1.443322], + [30.419105, -1.134659] + ] + ] + }, + "type": "Feature", + "id": "RWA", + "properties": { "name": "Rwanda", "id": "RWA", "centroid": [30.04, -1.59] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-8.794884, 27.120696], + [-8.817828, 27.656426], + [-8.66559, 27.656426], + [-8.665124, 27.589479], + [-8.6844, 27.395744], + [-8.687294, 25.881056], + [-11.969419, 25.933353], + [-11.937224, 23.374594], + [-12.874222, 23.284832], + [-13.118754, 22.77122], + [-12.929102, 21.327071], + [-16.845194, 21.333323], + [-17.063423, 20.999752], + [-17.020428, 21.42231], + [-17.002962, 21.420734], + [-14.750955, 21.5006], + [-14.630833, 21.86094], + [-14.221168, 22.310163], + [-13.89111, 23.691009], + [-12.500963, 24.770116], + [-12.030759, 26.030866], + [-11.71822, 26.104092], + [-11.392555, 26.883424], + [-10.551263, 26.990808], + [-10.189424, 26.860945], + [-9.735343, 26.860945], + [-9.413037, 27.088476], + [-8.794884, 27.120696] + ] + ] + }, + "type": "Feature", + "id": "ESH", + "properties": { "name": "Western Sahara", "id": "ESH", "centroid": [-12.12, 27.9] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [42.779332, 16.347891], + [42.649573, 16.774635], + [42.347989, 17.075806], + [42.270888, 17.474722], + [41.754382, 17.833046], + [41.221391, 18.6716], + [40.939341, 19.486485], + [40.247652, 20.174635], + [39.801685, 20.338862], + [39.139399, 21.291905], + [39.023696, 21.986875], + [39.066329, 22.579656], + [38.492772, 23.688451], + [38.02386, 24.078686], + [37.483635, 24.285495], + [37.154818, 24.858483], + [37.209491, 25.084542], + [36.931627, 25.602959], + [36.639604, 25.826228], + [36.249137, 26.570136], + [35.640182, 27.37652], + [35.130187, 28.063352], + [34.632336, 28.058546], + [34.787779, 28.607427], + [34.83222, 28.957483], + [34.956037, 29.356555], + [36.068941, 29.197495], + [36.501214, 29.505254], + [36.740528, 29.865283], + [37.503582, 30.003776], + [37.66812, 30.338665], + [37.998849, 30.5085], + [37.002166, 31.508413], + [39.004886, 32.010217], + [39.195468, 32.161009], + [40.399994, 31.889992], + [41.889981, 31.190009], + [44.709499, 29.178891], + [46.568713, 29.099025], + [47.459822, 29.002519], + [47.708851, 28.526063], + [48.416094, 28.552004], + [48.807595, 27.689628], + [49.299554, 27.461218], + [49.470914, 27.109999], + [50.152422, 26.689663], + [50.212935, 26.277027], + [50.113303, 25.943972], + [50.239859, 25.60805], + [50.527387, 25.327808], + [50.660557, 24.999896], + [50.810108, 24.754743], + [51.112415, 24.556331], + [51.389608, 24.627386], + [51.579519, 24.245497], + [51.617708, 24.014219], + [52.000733, 23.001154], + [55.006803, 22.496948], + [55.208341, 22.70833], + [55.666659, 22.000001], + [54.999982, 19.999994], + [52.00001, 19.000003], + [49.116672, 18.616668], + [48.183344, 18.166669], + [47.466695, 17.116682], + [47.000005, 16.949999], + [46.749994, 17.283338], + [46.366659, 17.233315], + [45.399999, 17.333335], + [45.216651, 17.433329], + [44.062613, 17.410359], + [43.791519, 17.319977], + [43.380794, 17.579987], + [43.115798, 17.08844], + [43.218375, 16.66689], + [42.779332, 16.347891] + ] + ] + }, + "type": "Feature", + "id": "SAU", + "properties": { "name": "Saudi Arabia", "id": "SAU", "centroid": [46.42, 24.41] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [33.963393, 9.464285], + [33.824963, 9.484061], + [33.842131, 9.981915], + [33.721959, 10.325262], + [33.206938, 10.720112], + [33.086766, 11.441141], + [33.206938, 12.179338], + [32.743419, 12.248008], + [32.67475, 12.024832], + [32.073892, 11.97333], + [32.314235, 11.681484], + [32.400072, 11.080626], + [31.850716, 10.531271], + [31.352862, 9.810241], + [30.837841, 9.707237], + [29.996639, 10.290927], + [29.618957, 10.084919], + [29.515953, 9.793074], + [29.000932, 9.604232], + [28.966597, 9.398224], + [27.97089, 9.398224], + [27.833551, 9.604232], + [27.112521, 9.638567], + [26.752006, 9.466893], + [26.477328, 9.55273], + [25.962307, 10.136421], + [25.790633, 10.411099], + [25.069604, 10.27376], + [24.794926, 9.810241], + [24.537415, 8.917538], + [24.194068, 8.728696], + [23.88698, 8.61973], + [23.805813, 8.666319], + [23.459013, 8.954286], + [23.394779, 9.265068], + [23.55725, 9.681218], + [23.554304, 10.089255], + [22.977544, 10.714463], + [22.864165, 11.142395], + [22.87622, 11.38461], + [22.50869, 11.67936], + [22.49762, 12.26024], + [22.28801, 12.64605], + [21.93681, 12.58818], + [22.03759, 12.95546], + [22.29658, 13.37232], + [22.18329, 13.78648], + [22.51202, 14.09318], + [22.30351, 14.32682], + [22.56795, 14.94429], + [23.02459, 15.68072], + [23.88689, 15.61084], + [23.83766, 19.58047], + [23.85, 20], + [25, 20.00304], + [25, 22], + [29.02, 22], + [32.9, 22], + [36.86623, 22], + [37.18872, 21.01885], + [36.96941, 20.83744], + [37.1147, 19.80796], + [37.48179, 18.61409], + [37.86276, 18.36786], + [38.41009, 17.998307], + [37.904, 17.42754], + [37.16747, 17.26314], + [36.85253, 16.95655], + [36.75389, 16.29186], + [36.32322, 14.82249], + [36.42951, 14.42211], + [36.27022, 13.56333], + [35.86363, 12.57828], + [35.26049, 12.08286], + [34.83163, 11.31896], + [34.73115, 10.91017], + [34.25745, 10.63009], + [33.96162, 9.58358], + [33.963393, 9.464285] + ] + ] + }, + "type": "Feature", + "id": "SDN", + "properties": { "name": "Sudan", "id": "SDN", "centroid": [32.31, 15.36] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [33.963393, 9.464285], + [33.97498, 8.68456], + [33.8255, 8.37916], + [33.2948, 8.35458], + [32.95418, 7.78497], + [33.56829, 7.71334], + [34.0751, 7.22595], + [34.25032, 6.82607], + [34.70702, 6.59422], + [35.298007, 5.506], + [34.620196, 4.847123], + [34.005, 4.249885], + [33.39, 3.79], + [32.68642, 3.79232], + [31.88145, 3.55827], + [31.24556, 3.7819], + [30.83385, 3.50917], + [29.95349, 4.1737], + [29.715995, 4.600805], + [29.159078, 4.389267], + [28.696678, 4.455077], + [28.428994, 4.287155], + [27.979977, 4.408413], + [27.374226, 5.233944], + [27.213409, 5.550953], + [26.465909, 5.946717], + [26.213418, 6.546603], + [25.796648, 6.979316], + [25.124131, 7.500085], + [25.114932, 7.825104], + [24.567369, 8.229188], + [23.88698, 8.61973], + [24.194068, 8.728696], + [24.537415, 8.917538], + [24.794926, 9.810241], + [25.069604, 10.27376], + [25.790633, 10.411099], + [25.962307, 10.136421], + [26.477328, 9.55273], + [26.752006, 9.466893], + [27.112521, 9.638567], + [27.833551, 9.604232], + [27.97089, 9.398224], + [28.966597, 9.398224], + [29.000932, 9.604232], + [29.515953, 9.793074], + [29.618957, 10.084919], + [29.996639, 10.290927], + [30.837841, 9.707237], + [31.352862, 9.810241], + [31.850716, 10.531271], + [32.400072, 11.080626], + [32.314235, 11.681484], + [32.073892, 11.97333], + [32.67475, 12.024832], + [32.743419, 12.248008], + [33.206938, 12.179338], + [33.086766, 11.441141], + [33.206938, 10.720112], + [33.721959, 10.325262], + [33.842131, 9.981915], + [33.824963, 9.484061], + [33.963393, 9.464285] + ] + ] + }, + "type": "Feature", + "id": "SSD", + "properties": { "name": "South Sudan", "id": "SSD", "centroid": [31.36, 4.51] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-16.713729, 13.594959], + [-17.126107, 14.373516], + [-17.625043, 14.729541], + [-17.185173, 14.919477], + [-16.700706, 15.621527], + [-16.463098, 16.135036], + [-16.12069, 16.455663], + [-15.623666, 16.369337], + [-15.135737, 16.587282], + [-14.577348, 16.598264], + [-14.099521, 16.304302], + [-13.435738, 16.039383], + [-12.830658, 15.303692], + [-12.17075, 14.616834], + [-12.124887, 13.994727], + [-11.927716, 13.422075], + [-11.553398, 13.141214], + [-11.467899, 12.754519], + [-11.513943, 12.442988], + [-11.658301, 12.386583], + [-12.203565, 12.465648], + [-12.278599, 12.35444], + [-12.499051, 12.33209], + [-13.217818, 12.575874], + [-13.700476, 12.586183], + [-15.548477, 12.62817], + [-15.816574, 12.515567], + [-16.147717, 12.547762], + [-16.677452, 12.384852], + [-16.841525, 13.151394], + [-15.931296, 13.130284], + [-15.691001, 13.270353], + [-15.511813, 13.27857], + [-15.141163, 13.509512], + [-14.712197, 13.298207], + [-14.277702, 13.280585], + [-13.844963, 13.505042], + [-14.046992, 13.794068], + [-14.376714, 13.62568], + [-14.687031, 13.630357], + [-15.081735, 13.876492], + [-15.39877, 13.860369], + [-15.624596, 13.623587], + [-16.713729, 13.594959] + ] + ] + }, + "type": "Feature", + "id": "SEN", + "properties": { "name": "Senegal", "id": "SEN", "centroid": [-17.29, 14.34] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [162.119025, -10.482719], + [162.398646, -10.826367], + [161.700032, -10.820011], + [161.319797, -10.204751], + [161.917383, -10.446701], + [162.119025, -10.482719] + ] + ], + [ + [ + [160.852229, -9.872937], + [160.462588, -9.89521], + [159.849447, -9.794027], + [159.640003, -9.63998], + [159.702945, -9.24295], + [160.362956, -9.400304], + [160.688518, -9.610162], + [160.852229, -9.872937] + ] + ], + [ + [ + [161.679982, -9.599982], + [161.529397, -9.784312], + [160.788253, -8.917543], + [160.579997, -8.320009], + [160.920028, -8.320009], + [161.280006, -9.120011], + [161.679982, -9.599982] + ] + ], + [ + [ + [159.875027, -8.33732], + [159.917402, -8.53829], + [159.133677, -8.114181], + [158.586114, -7.754824], + [158.21115, -7.421872], + [158.359978, -7.320018], + [158.820001, -7.560003], + [159.640003, -8.020027], + [159.875027, -8.33732] + ] + ], + [ + [ + [157.538426, -7.34782], + [157.33942, -7.404767], + [156.90203, -7.176874], + [156.491358, -6.765943], + [156.542828, -6.599338], + [157.14, -7.021638], + [157.538426, -7.34782] + ] + ] + ] + }, + "type": "Feature", + "id": "SLB", + "properties": { "name": "Solomon Islands", "id": "SLB", "centroid": [159.57, -9.27] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-11.438779, 6.785917], + [-11.708195, 6.860098], + [-12.428099, 7.262942], + [-12.949049, 7.798646], + [-13.124025, 8.163946], + [-13.24655, 8.903049], + [-12.711958, 9.342712], + [-12.596719, 9.620188], + [-12.425929, 9.835834], + [-12.150338, 9.858572], + [-11.917277, 10.046984], + [-11.117481, 10.045873], + [-10.839152, 9.688246], + [-10.622395, 9.26791], + [-10.65477, 8.977178], + [-10.494315, 8.715541], + [-10.505477, 8.348896], + [-10.230094, 8.406206], + [-10.695595, 7.939464], + [-11.146704, 7.396706], + [-11.199802, 7.105846], + [-11.438779, 6.785917] + ] + ] + }, + "type": "Feature", + "id": "SLE", + "properties": { "name": "Sierra Leone", "id": "SLE", "centroid": [-13.17, 8.3] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-87.793111, 13.38448], + [-87.904112, 13.149017], + [-88.483302, 13.163951], + [-88.843228, 13.259734], + [-89.256743, 13.458533], + [-89.812394, 13.520622], + [-90.095555, 13.735338], + [-90.064678, 13.88197], + [-89.721934, 14.134228], + [-89.534219, 14.244816], + [-89.587343, 14.362586], + [-89.353326, 14.424133], + [-89.058512, 14.340029], + [-88.843073, 14.140507], + [-88.541231, 13.980155], + [-88.503998, 13.845486], + [-88.065343, 13.964626], + [-87.859515, 13.893312], + [-87.723503, 13.78505], + [-87.793111, 13.38448] + ] + ] + }, + "type": "Feature", + "id": "SLV", + "properties": { "name": "El Salvador", "id": "SLV", "centroid": [-89.1, 13.4] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [49.72862, 11.5789], + [50.25878, 11.67957], + [50.73202, 12.0219], + [51.1112, 12.02464], + [51.13387, 11.74815], + [51.04153, 11.16651], + [51.04531, 10.6409], + [50.83418, 10.27972], + [50.55239, 9.19874], + [50.07092, 8.08173], + [49.4527, 6.80466], + [48.59455, 5.33911], + [47.74079, 4.2194], + [46.56476, 2.85529], + [45.56399, 2.04576], + [44.06815, 1.05283], + [43.13597, 0.2922], + [42.04157, -0.91916], + [41.81095, -1.44647], + [41.58513, -1.68325], + [40.993, -0.85829], + [40.98105, 2.78452], + [41.855083, 3.918912], + [42.12861, 4.23413], + [42.76967, 4.25259], + [43.66087, 4.95755], + [44.9636, 5.00162], + [47.78942, 8.003], + [46.948328, 7.996877], + [43.67875, 9.18358], + [43.296975, 9.540477], + [42.92812, 10.02194], + [42.55876, 10.57258], + [42.776852, 10.926879], + [43.145305, 11.46204], + [43.47066, 11.27771], + [43.666668, 10.864169], + [44.117804, 10.445538], + [44.614259, 10.442205], + [45.556941, 10.698029], + [46.645401, 10.816549], + [47.525658, 11.127228], + [48.021596, 11.193064], + [48.378784, 11.375482], + [48.948206, 11.410622], + [48.942005, 11.394266], + [48.948205, 11.410617], + [49.26776, 11.43033], + [49.72862, 11.5789] + ] + ] + }, + "type": "Feature", + "id": "SOM", + "properties": { "name": "Somalia", "id": "SOM", "centroid": [45.25, 2.02] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [20.874313, 45.416375], + [21.483526, 45.18117], + [21.562023, 44.768947], + [22.145088, 44.478422], + [22.459022, 44.702517], + [22.705726, 44.578003], + [22.474008, 44.409228], + [22.65715, 44.234923], + [22.410446, 44.008063], + [22.500157, 43.642814], + [22.986019, 43.211161], + [22.604801, 42.898519], + [22.436595, 42.580321], + [22.545012, 42.461362], + [22.380526, 42.32026], + [21.91708, 42.30364], + [21.576636, 42.245224], + [21.3527, 42.2068], + [20.76216, 42.05186], + [20.76216, 42.05186], + [20.71731, 41.84711], + [20.59023, 41.85541], + [20.52295, 42.21787], + [20.28374, 42.32025], + [20.0707, 42.58863], + [20.25758, 42.81275], + [20.3398, 42.89852], + [19.95857, 43.10604], + [19.63, 43.21378], + [19.48389, 43.35229], + [19.21852, 43.52384], + [19.454, 43.5681], + [19.59976, 44.03847], + [19.11761, 44.42307], + [19.36803, 44.863], + [19.00548, 44.86023], + [19.390476, 45.236516], + [19.072769, 45.521511], + [18.82982, 45.90888], + [19.596045, 46.17173], + [20.220192, 46.127469], + [20.762175, 45.734573], + [20.874313, 45.416375] + ] + ] + }, + "type": "Feature", + "id": "SRB", + "properties": { "name": "Republic of Serbia", "id": "SRB", "centroid": [20.28, 44.49] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-57.147436, 5.97315], + [-55.949318, 5.772878], + [-55.84178, 5.953125], + [-55.03325, 6.025291], + [-53.958045, 5.756548], + [-54.478633, 4.896756], + [-54.399542, 4.212611], + [-54.006931, 3.620038], + [-54.181726, 3.18978], + [-54.269705, 2.732392], + [-54.524754, 2.311849], + [-55.097587, 2.523748], + [-55.569755, 2.421506], + [-55.973322, 2.510364], + [-56.073342, 2.220795], + [-55.9056, 2.021996], + [-55.995698, 1.817667], + [-56.539386, 1.899523], + [-57.150098, 2.768927], + [-57.281433, 3.333492], + [-57.601569, 3.334655], + [-58.044694, 4.060864], + [-57.86021, 4.576801], + [-57.914289, 4.812626], + [-57.307246, 5.073567], + [-57.147436, 5.97315] + ] + ] + }, + "type": "Feature", + "id": "SUR", + "properties": { "name": "Suriname", "id": "SUR", "centroid": [-55.1, 5.5] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [18.853144, 49.49623], + [18.909575, 49.435846], + [19.320713, 49.571574], + [19.825023, 49.217125], + [20.415839, 49.431453], + [20.887955, 49.328772], + [21.607808, 49.470107], + [22.558138, 49.085738], + [22.280842, 48.825392], + [22.085608, 48.422264], + [21.872236, 48.319971], + [20.801294, 48.623854], + [20.473562, 48.56285], + [20.239054, 48.327567], + [19.769471, 48.202691], + [19.661364, 48.266615], + [19.174365, 48.111379], + [18.777025, 48.081768], + [18.696513, 47.880954], + [17.857133, 47.758429], + [17.488473, 47.867466], + [16.979667, 48.123497], + [16.879983, 48.470013], + [16.960288, 48.596982], + [17.101985, 48.816969], + [17.545007, 48.800019], + [17.886485, 48.903475], + [17.913512, 48.996493], + [18.104973, 49.043983], + [18.170498, 49.271515], + [18.399994, 49.315001], + [18.554971, 49.495015], + [18.853144, 49.49623] + ] + ] + }, + "type": "Feature", + "id": "SVK", + "properties": { "name": "Slovakia", "id": "SVK", "centroid": [17.07, 48.1] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [13.806475, 46.509306], + [14.632472, 46.431817], + [15.137092, 46.658703], + [16.011664, 46.683611], + [16.202298, 46.852386], + [16.370505, 46.841327], + [16.564808, 46.503751], + [15.768733, 46.238108], + [15.67153, 45.834154], + [15.323954, 45.731783], + [15.327675, 45.452316], + [14.935244, 45.471695], + [14.595109, 45.634941], + [14.411968, 45.466166], + [13.71506, 45.500324], + [13.93763, 45.591016], + [13.69811, 46.016778], + [13.806475, 46.509306] + ] + ] + }, + "type": "Feature", + "id": "SVN", + "properties": { "name": "Slovenia", "id": "SVN", "centroid": [14.33, 46.04] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [22.183173, 65.723741], + [21.213517, 65.026005], + [21.369631, 64.413588], + [19.778876, 63.609554], + [17.847779, 62.7494], + [17.119555, 61.341166], + [17.831346, 60.636583], + [18.787722, 60.081914], + [17.869225, 58.953766], + [16.829185, 58.719827], + [16.44771, 57.041118], + [15.879786, 56.104302], + [14.666681, 56.200885], + [14.100721, 55.407781], + [12.942911, 55.361737], + [12.625101, 56.30708], + [11.787942, 57.441817], + [11.027369, 58.856149], + [11.468272, 59.432393], + [12.300366, 60.117933], + [12.631147, 61.293572], + [11.992064, 61.800362], + [11.930569, 63.128318], + [12.579935, 64.066219], + [13.571916, 64.049114], + [13.919905, 64.445421], + [13.55569, 64.787028], + [15.108411, 66.193867], + [16.108712, 67.302456], + [16.768879, 68.013937], + [17.729182, 68.010552], + [17.993868, 68.567391], + [19.87856, 68.407194], + [20.025269, 69.065139], + [20.645593, 69.106247], + [21.978535, 68.616846], + [23.539473, 67.936009], + [23.56588, 66.396051], + [23.903379, 66.006927], + [22.183173, 65.723741] + ] + ] + }, + "type": "Feature", + "id": "SWE", + "properties": { "name": "Sweden", "id": "SWE", "centroid": [18.03, 59.2] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [32.071665, -26.73382], + [31.86806, -27.177927], + [31.282773, -27.285879], + [30.685962, -26.743845], + [30.676609, -26.398078], + [30.949667, -26.022649], + [31.04408, -25.731452], + [31.333158, -25.660191], + [31.837778, -25.843332], + [31.985779, -26.29178], + [32.071665, -26.73382] + ] + ] + }, + "type": "Feature", + "id": "SWZ", + "properties": { "name": "Swaziland", "id": "SWZ", "centroid": [31.06, -26.18] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [38.792341, 33.378686], + [36.834062, 32.312938], + [35.719918, 32.709192], + [35.700798, 32.716014], + [35.836397, 32.868123], + [35.821101, 33.277426], + [36.06646, 33.824912], + [36.61175, 34.201789], + [36.448194, 34.593935], + [35.998403, 34.644914], + [35.905023, 35.410009], + [36.149763, 35.821535], + [36.41755, 36.040617], + [36.685389, 36.259699], + [36.739494, 36.81752], + [37.066761, 36.623036], + [38.167727, 36.90121], + [38.699891, 36.712927], + [39.52258, 36.716054], + [40.673259, 37.091276], + [41.212089, 37.074352], + [42.349591, 37.229873], + [41.837064, 36.605854], + [41.289707, 36.358815], + [41.383965, 35.628317], + [41.006159, 34.419372], + [38.792341, 33.378686] + ] + ] + }, + "type": "Feature", + "id": "SYR", + "properties": { "name": "Syria", "id": "SYR", "centroid": [36.17, 33.31] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [14.495787, 12.859396], + [14.595781, 13.330427], + [13.954477, 13.353449], + [13.956699, 13.996691], + [13.540394, 14.367134], + [13.97217, 15.68437], + [15.247731, 16.627306], + [15.300441, 17.92795], + [15.685741, 19.95718], + [15.903247, 20.387619], + [15.487148, 20.730415], + [15.47106, 21.04845], + [15.096888, 21.308519], + [14.8513, 22.86295], + [15.86085, 23.40972], + [19.84926, 21.49509], + [23.83766, 19.58047], + [23.88689, 15.61084], + [23.02459, 15.68072], + [22.56795, 14.94429], + [22.30351, 14.32682], + [22.51202, 14.09318], + [22.18329, 13.78648], + [22.29658, 13.37232], + [22.03759, 12.95546], + [21.93681, 12.58818], + [22.28801, 12.64605], + [22.49762, 12.26024], + [22.50869, 11.67936], + [22.87622, 11.38461], + [22.864165, 11.142395], + [22.231129, 10.971889], + [21.723822, 10.567056], + [21.000868, 9.475985], + [20.059685, 9.012706], + [19.094008, 9.074847], + [18.81201, 8.982915], + [18.911022, 8.630895], + [18.389555, 8.281304], + [17.96493, 7.890914], + [16.705988, 7.508328], + [16.456185, 7.734774], + [16.290562, 7.754307], + [16.106232, 7.497088], + [15.27946, 7.421925], + [15.436092, 7.692812], + [15.120866, 8.38215], + [14.979996, 8.796104], + [14.544467, 8.965861], + [13.954218, 9.549495], + [14.171466, 10.021378], + [14.627201, 9.920919], + [14.909354, 9.992129], + [15.467873, 9.982337], + [14.923565, 10.891325], + [14.960152, 11.555574], + [14.89336, 12.21905], + [14.495787, 12.859396] + ] + ] + }, + "type": "Feature", + "id": "TCD", + "properties": { "name": "Chad", "id": "TCD", "centroid": [14.59, 12.1] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [1.865241, 6.142158], + [1.060122, 5.928837], + [0.836931, 6.279979], + [0.570384, 6.914359], + [0.490957, 7.411744], + [0.712029, 8.312465], + [0.461192, 8.677223], + [0.365901, 9.465004], + [0.36758, 10.191213], + [-0.049785, 10.706918], + [0.023803, 11.018682], + [0.899563, 10.997339], + [0.772336, 10.470808], + [1.077795, 10.175607], + [1.425061, 9.825395], + [1.463043, 9.334624], + [1.664478, 9.12859], + [1.618951, 6.832038], + [1.865241, 6.142158] + ] + ] + }, + "type": "Feature", + "id": "TGO", + "properties": { "name": "Togo", "id": "TGO", "centroid": [1.2, 6.09] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [102.584932, 12.186595], + [101.687158, 12.64574], + [100.83181, 12.627085], + [100.978467, 13.412722], + [100.097797, 13.406856], + [100.018733, 12.307001], + [99.478921, 10.846367], + [99.153772, 9.963061], + [99.222399, 9.239255], + [99.873832, 9.207862], + [100.279647, 8.295153], + [100.459274, 7.429573], + [101.017328, 6.856869], + [101.623079, 6.740622], + [102.141187, 6.221636], + [101.814282, 5.810808], + [101.154219, 5.691384], + [101.075516, 6.204867], + [100.259596, 6.642825], + [100.085757, 6.464489], + [99.690691, 6.848213], + [99.519642, 7.343454], + [98.988253, 7.907993], + [98.503786, 8.382305], + [98.339662, 7.794512], + [98.150009, 8.350007], + [98.25915, 8.973923], + [98.553551, 9.93296], + [99.038121, 10.960546], + [99.587286, 11.892763], + [99.196354, 12.804748], + [99.212012, 13.269294], + [99.097755, 13.827503], + [98.430819, 14.622028], + [98.192074, 15.123703], + [98.537376, 15.308497], + [98.903348, 16.177824], + [98.493761, 16.837836], + [97.859123, 17.567946], + [97.375896, 18.445438], + [97.797783, 18.62708], + [98.253724, 19.708203], + [98.959676, 19.752981], + [99.543309, 20.186598], + [100.115988, 20.41785], + [100.548881, 20.109238], + [100.606294, 19.508344], + [101.282015, 19.462585], + [101.035931, 18.408928], + [101.059548, 17.512497], + [102.113592, 18.109102], + [102.413005, 17.932782], + [102.998706, 17.961695], + [103.200192, 18.309632], + [103.956477, 18.240954], + [104.716947, 17.428859], + [104.779321, 16.441865], + [105.589039, 15.570316], + [105.544338, 14.723934], + [105.218777, 14.273212], + [104.281418, 14.416743], + [102.988422, 14.225721], + [102.348099, 13.394247], + [102.584932, 12.186595] + ] + ] + }, + "type": "Feature", + "id": "THA", + "properties": { "name": "Thailand", "id": "THA", "centroid": [100.35, 13.45] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [71.014198, 40.244366], + [70.648019, 39.935754], + [69.55961, 40.103211], + [69.464887, 39.526683], + [70.549162, 39.604198], + [71.784694, 39.279463], + [73.675379, 39.431237], + [73.928852, 38.505815], + [74.257514, 38.606507], + [74.864816, 38.378846], + [74.829986, 37.990007], + [74.980002, 37.41999], + [73.948696, 37.421566], + [73.260056, 37.495257], + [72.63689, 37.047558], + [72.193041, 36.948288], + [71.844638, 36.738171], + [71.448693, 37.065645], + [71.541918, 37.905774], + [71.239404, 37.953265], + [71.348131, 38.258905], + [70.806821, 38.486282], + [70.376304, 38.138396], + [70.270574, 37.735165], + [70.116578, 37.588223], + [69.518785, 37.608997], + [69.196273, 37.151144], + [68.859446, 37.344336], + [68.135562, 37.023115], + [67.83, 37.144994], + [68.392033, 38.157025], + [68.176025, 38.901553], + [67.44222, 39.140144], + [67.701429, 39.580478], + [68.536416, 39.533453], + [69.011633, 40.086158], + [69.329495, 40.727824], + [70.666622, 40.960213], + [70.45816, 40.496495], + [70.601407, 40.218527], + [71.014198, 40.244366] + ] + ] + }, + "type": "Feature", + "id": "TJK", + "properties": { "name": "Tajikistan", "id": "TJK", "centroid": [68.48, 38.33] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [61.210817, 35.650072], + [61.123071, 36.491597], + [60.377638, 36.527383], + [59.234762, 37.412988], + [58.436154, 37.522309], + [57.330434, 38.029229], + [56.619366, 38.121394], + [56.180375, 37.935127], + [55.511578, 37.964117], + [54.800304, 37.392421], + [53.921598, 37.198918], + [53.735511, 37.906136], + [53.880929, 38.952093], + [53.101028, 39.290574], + [53.357808, 39.975286], + [52.693973, 40.033629], + [52.915251, 40.876523], + [53.858139, 40.631034], + [54.736845, 40.951015], + [54.008311, 41.551211], + [53.721713, 42.123191], + [52.91675, 41.868117], + [52.814689, 41.135371], + [52.50246, 41.783316], + [52.944293, 42.116034], + [54.079418, 42.324109], + [54.755345, 42.043971], + [55.455251, 41.259859], + [55.968191, 41.308642], + [57.096391, 41.32231], + [56.932215, 41.826026], + [57.78653, 42.170553], + [58.629011, 42.751551], + [59.976422, 42.223082], + [60.083341, 41.425146], + [60.465953, 41.220327], + [61.547179, 41.26637], + [61.882714, 41.084857], + [62.37426, 40.053886], + [63.518015, 39.363257], + [64.170223, 38.892407], + [65.215999, 38.402695], + [66.54615, 37.974685], + [66.518607, 37.362784], + [66.217385, 37.39379], + [65.745631, 37.661164], + [65.588948, 37.305217], + [64.746105, 37.111818], + [64.546479, 36.312073], + [63.982896, 36.007957], + [63.193538, 35.857166], + [62.984662, 35.404041], + [62.230651, 35.270664], + [61.210817, 35.650072] + ] + ] + }, + "type": "Feature", + "id": "TKM", + "properties": { "name": "Turkmenistan", "id": "TKM", "centroid": [57.5, 38] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [124.968682, -8.89279], + [125.086246, -8.656887], + [125.947072, -8.432095], + [126.644704, -8.398247], + [126.957243, -8.273345], + [127.335928, -8.397317], + [126.967992, -8.668256], + [125.925885, -9.106007], + [125.08852, -9.393173], + [125.07002, -9.089987], + [124.968682, -8.89279] + ] + ] + }, + "type": "Feature", + "id": "TLS", + "properties": { "name": "East Timor", "id": "TLS", "centroid": [125.34, -8.29] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-61.68, 10.76], + [-61.105, 10.89], + [-60.895, 10.855], + [-60.935, 10.11], + [-61.77, 10], + [-61.95, 10.09], + [-61.66, 10.365], + [-61.68, 10.76] + ] + ] + }, + "type": "Feature", + "id": "TTO", + "properties": { "name": "Trinidad and Tobago", "id": "TTO", "centroid": [-61.31, 10.4] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [9.48214, 30.307556], + [9.055603, 32.102692], + [8.439103, 32.506285], + [8.430473, 32.748337], + [7.612642, 33.344115], + [7.524482, 34.097376], + [8.140981, 34.655146], + [8.376368, 35.479876], + [8.217824, 36.433177], + [8.420964, 36.946427], + [9.509994, 37.349994], + [10.210002, 37.230002], + [10.18065, 36.724038], + [11.028867, 37.092103], + [11.100026, 36.899996], + [10.600005, 36.41], + [10.593287, 35.947444], + [10.939519, 35.698984], + [10.807847, 34.833507], + [10.149593, 34.330773], + [10.339659, 33.785742], + [10.856836, 33.76874], + [11.108501, 33.293343], + [11.488787, 33.136996], + [11.432253, 32.368903], + [10.94479, 32.081815], + [10.636901, 31.761421], + [9.950225, 31.37607], + [10.056575, 30.961831], + [9.970017, 30.539325], + [9.48214, 30.307556] + ] + ] + }, + "type": "Feature", + "id": "TUN", + "properties": { "name": "Tunisia", "id": "TUN", "centroid": [10.11, 36.5] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [36.913127, 41.335358], + [38.347665, 40.948586], + [39.512607, 41.102763], + [40.373433, 41.013673], + [41.554084, 41.535656], + [42.619549, 41.583173], + [43.582746, 41.092143], + [43.752658, 40.740201], + [43.656436, 40.253564], + [44.400009, 40.005], + [44.79399, 39.713003], + [44.109225, 39.428136], + [44.421403, 38.281281], + [44.225756, 37.971584], + [44.772699, 37.170445], + [44.293452, 37.001514], + [43.942259, 37.256228], + [42.779126, 37.385264], + [42.349591, 37.229873], + [41.212089, 37.074352], + [40.673259, 37.091276], + [39.52258, 36.716054], + [38.699891, 36.712927], + [38.167727, 36.90121], + [37.066761, 36.623036], + [36.739494, 36.81752], + [36.685389, 36.259699], + [36.41755, 36.040617], + [36.149763, 35.821535], + [35.782085, 36.274995], + [36.160822, 36.650606], + [35.550936, 36.565443], + [34.714553, 36.795532], + [34.026895, 36.21996], + [32.509158, 36.107564], + [31.699595, 36.644275], + [30.621625, 36.677865], + [30.391096, 36.262981], + [29.699976, 36.144357], + [28.732903, 36.676831], + [27.641187, 36.658822], + [27.048768, 37.653361], + [26.318218, 38.208133], + [26.8047, 38.98576], + [26.170785, 39.463612], + [27.28002, 40.420014], + [28.819978, 40.460011], + [29.240004, 41.219991], + [31.145934, 41.087622], + [32.347979, 41.736264], + [33.513283, 42.01896], + [35.167704, 42.040225], + [36.913127, 41.335358] + ] + ], + [ + [ + [27.192377, 40.690566], + [26.358009, 40.151994], + [26.043351, 40.617754], + [26.056942, 40.824123], + [26.294602, 40.936261], + [26.604196, 41.562115], + [26.117042, 41.826905], + [27.135739, 42.141485], + [27.99672, 42.007359], + [28.115525, 41.622886], + [28.988443, 41.299934], + [28.806438, 41.054962], + [27.619017, 40.999823], + [27.192377, 40.690566] + ] + ] + ] + }, + "type": "Feature", + "id": "TUR", + "properties": { "name": "Turkey", "id": "TUR", "centroid": [32.54, 39.57] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [33.903711, -0.95], + [34.07262, -1.05982], + [37.69869, -3.09699], + [37.7669, -3.67712], + [39.20222, -4.67677], + [38.74054, -5.90895], + [38.79977, -6.47566], + [39.44, -6.84], + [39.47, -7.1], + [39.19469, -7.7039], + [39.25203, -8.00781], + [39.18652, -8.48551], + [39.53574, -9.11237], + [39.9496, -10.0984], + [40.31659, -10.3171], + [39.521, -10.89688], + [38.427557, -11.285202], + [37.82764, -11.26879], + [37.47129, -11.56876], + [36.775151, -11.594537], + [36.514082, -11.720938], + [35.312398, -11.439146], + [34.559989, -11.52002], + [34.28, -10.16], + [33.940838, -9.693674], + [33.73972, -9.41715], + [32.759375, -9.230599], + [32.191865, -8.930359], + [31.556348, -8.762049], + [31.157751, -8.594579], + [30.74, -8.34], + [30.2, -7.08], + [29.62, -6.52], + [29.419993, -5.939999], + [29.519987, -5.419979], + [29.339998, -4.499983], + [29.753512, -4.452389], + [30.11632, -4.09012], + [30.50554, -3.56858], + [30.75224, -3.35931], + [30.74301, -3.03431], + [30.52766, -2.80762], + [30.46967, -2.41383], + [30.758309, -2.28725], + [30.816135, -1.698914], + [30.419105, -1.134659], + [30.76986, -1.01455], + [31.86617, -1.02736], + [33.903711, -0.95] + ] + ] + }, + "type": "Feature", + "id": "TZA", + "properties": { "name": "United Republic of Tanzania", "id": "TZA", "centroid": [35.45, -6.08] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [31.86617, -1.02736], + [30.76986, -1.01455], + [30.419105, -1.134659], + [29.821519, -1.443322], + [29.579466, -1.341313], + [29.587838, -0.587406], + [29.8195, -0.2053], + [29.875779, 0.59738], + [30.086154, 1.062313], + [30.468508, 1.583805], + [30.85267, 1.849396], + [31.174149, 2.204465], + [30.77332, 2.33989], + [30.83385, 3.50917], + [31.24556, 3.7819], + [31.88145, 3.55827], + [32.68642, 3.79232], + [33.39, 3.79], + [34.005, 4.249885], + [34.47913, 3.5556], + [34.59607, 3.05374], + [35.03599, 1.90584], + [34.6721, 1.17694], + [34.18, 0.515], + [33.893569, 0.109814], + [33.903711, -0.95], + [31.86617, -1.02736] + ] + ] + }, + "type": "Feature", + "id": "UGA", + "properties": { "name": "Uganda", "id": "UGA", "centroid": [32.3, 0.2] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [31.785998, 52.101678], + [32.159412, 52.061267], + [32.412058, 52.288695], + [32.715761, 52.238465], + [33.7527, 52.335075], + [34.391731, 51.768882], + [34.141978, 51.566413], + [34.224816, 51.255993], + [35.022183, 51.207572], + [35.377924, 50.773955], + [35.356116, 50.577197], + [36.626168, 50.225591], + [37.39346, 50.383953], + [38.010631, 49.915662], + [38.594988, 49.926462], + [40.069058, 49.601055], + [40.080789, 49.30743], + [39.674664, 48.783818], + [39.895632, 48.232405], + [39.738278, 47.898937], + [38.770585, 47.825608], + [38.255112, 47.5464], + [38.223538, 47.10219], + [37.425137, 47.022221], + [36.759855, 46.6987], + [35.823685, 46.645964], + [34.962342, 46.273197], + [35.020788, 45.651219], + [35.510009, 45.409993], + [36.529998, 45.46999], + [36.334713, 45.113216], + [35.239999, 44.939996], + [33.882511, 44.361479], + [33.326421, 44.564877], + [33.546924, 45.034771], + [32.454174, 45.327466], + [32.630804, 45.519186], + [33.588162, 45.851569], + [33.298567, 46.080598], + [31.74414, 46.333348], + [31.675307, 46.706245], + [30.748749, 46.5831], + [30.377609, 46.03241], + [29.603289, 45.293308], + [29.149725, 45.464925], + [28.679779, 45.304031], + [28.233554, 45.488283], + [28.485269, 45.596907], + [28.659987, 45.939987], + [28.933717, 46.25883], + [28.862972, 46.437889], + [29.072107, 46.517678], + [29.170654, 46.379262], + [29.759972, 46.349988], + [30.024659, 46.423937], + [29.83821, 46.525326], + [29.908852, 46.674361], + [29.559674, 46.928583], + [29.415135, 47.346645], + [29.050868, 47.510227], + [29.122698, 47.849095], + [28.670891, 48.118149], + [28.259547, 48.155562], + [27.522537, 48.467119], + [26.857824, 48.368211], + [26.619337, 48.220726], + [26.19745, 48.220881], + [25.945941, 47.987149], + [25.207743, 47.891056], + [24.866317, 47.737526], + [24.402056, 47.981878], + [23.760958, 47.985598], + [23.142236, 48.096341], + [22.710531, 47.882194], + [22.64082, 48.15024], + [22.085608, 48.422264], + [22.280842, 48.825392], + [22.558138, 49.085738], + [22.776419, 49.027395], + [22.51845, 49.476774], + [23.426508, 50.308506], + [23.922757, 50.424881], + [24.029986, 50.705407], + [23.527071, 51.578454], + [24.005078, 51.617444], + [24.553106, 51.888461], + [25.327788, 51.910656], + [26.337959, 51.832289], + [27.454066, 51.592303], + [28.241615, 51.572227], + [28.617613, 51.427714], + [28.992835, 51.602044], + [29.254938, 51.368234], + [30.157364, 51.416138], + [30.555117, 51.319503], + [30.619454, 51.822806], + [30.927549, 52.042353], + [31.785998, 52.101678] + ] + ] + }, + "type": "Feature", + "id": "UKR", + "properties": { "name": "Ukraine", "id": "UKR", "centroid": [30.28, 50.3] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-57.625133, -30.216295], + [-56.976026, -30.109686], + [-55.973245, -30.883076], + [-55.60151, -30.853879], + [-54.572452, -31.494511], + [-53.787952, -32.047243], + [-53.209589, -32.727666], + [-53.650544, -33.202004], + [-53.373662, -33.768378], + [-53.806426, -34.396815], + [-54.935866, -34.952647], + [-55.67409, -34.752659], + [-56.215297, -34.859836], + [-57.139685, -34.430456], + [-57.817861, -34.462547], + [-58.427074, -33.909454], + [-58.349611, -33.263189], + [-58.132648, -33.040567], + [-58.14244, -32.044504], + [-57.874937, -31.016556], + [-57.625133, -30.216295] + ] + ] + }, + "type": "Feature", + "id": "URY", + "properties": { "name": "Uruguay", "id": "URY", "centroid": [-56.11, -34.5] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-155.54211, 19.08348], + [-155.68817, 18.91619], + [-155.93665, 19.05939], + [-155.90806, 19.33888], + [-156.07347, 19.70294], + [-156.02368, 19.81422], + [-155.85008, 19.97729], + [-155.91907, 20.17395], + [-155.86108, 20.26721], + [-155.78505, 20.2487], + [-155.40214, 20.07975], + [-155.22452, 19.99302], + [-155.06226, 19.8591], + [-154.80741, 19.50871], + [-154.83147, 19.45328], + [-155.22217, 19.23972], + [-155.54211, 19.08348] + ] + ], + [ + [ + [-156.07926, 20.64397], + [-156.41445, 20.57241], + [-156.58673, 20.783], + [-156.70167, 20.8643], + [-156.71055, 20.92676], + [-156.61258, 21.01249], + [-156.25711, 20.91745], + [-155.99566, 20.76404], + [-156.07926, 20.64397] + ] + ], + [ + [ + [-156.75824, 21.17684], + [-156.78933, 21.06873], + [-157.32521, 21.09777], + [-157.25027, 21.21958], + [-156.75824, 21.17684] + ] + ], + [ + [ + [-157.65283, 21.32217], + [-157.70703, 21.26442], + [-157.7786, 21.27729], + [-158.12667, 21.31244], + [-158.2538, 21.53919], + [-158.29265, 21.57912], + [-158.0252, 21.71696], + [-157.94161, 21.65272], + [-157.65283, 21.32217] + ] + ], + [ + [ + [-159.34512, 21.982], + [-159.46372, 21.88299], + [-159.80051, 22.06533], + [-159.74877, 22.1382], + [-159.5962, 22.23618], + [-159.36569, 22.21494], + [-159.34512, 21.982] + ] + ], + [ + [ + [-94.81758, 49.38905], + [-94.64, 48.84], + [-94.32914, 48.67074], + [-93.63087, 48.60926], + [-92.61, 48.45], + [-91.64, 48.14], + [-90.83, 48.27], + [-89.6, 48.01], + [-89.272917, 48.019808], + [-88.378114, 48.302918], + [-87.439793, 47.94], + [-86.461991, 47.553338], + [-85.652363, 47.220219], + [-84.87608, 46.900083], + [-84.779238, 46.637102], + [-84.543749, 46.538684], + [-84.6049, 46.4396], + [-84.3367, 46.40877], + [-84.14212, 46.512226], + [-84.091851, 46.275419], + [-83.890765, 46.116927], + [-83.616131, 46.116927], + [-83.469551, 45.994686], + [-83.592851, 45.816894], + [-82.550925, 45.347517], + [-82.337763, 44.44], + [-82.137642, 43.571088], + [-82.43, 42.98], + [-82.9, 42.43], + [-83.12, 42.08], + [-83.142, 41.975681], + [-83.02981, 41.832796], + [-82.690089, 41.675105], + [-82.439278, 41.675105], + [-81.277747, 42.209026], + [-80.247448, 42.3662], + [-78.939362, 42.863611], + [-78.92, 42.965], + [-79.01, 43.27], + [-79.171674, 43.466339], + [-78.72028, 43.625089], + [-77.737885, 43.629056], + [-76.820034, 43.628784], + [-76.5, 44.018459], + [-76.375, 44.09631], + [-75.31821, 44.81645], + [-74.867, 45.00048], + [-73.34783, 45.00738], + [-71.50506, 45.0082], + [-71.405, 45.255], + [-71.08482, 45.30524], + [-70.66, 45.46], + [-70.305, 45.915], + [-69.99997, 46.69307], + [-69.237216, 47.447781], + [-68.905, 47.185], + [-68.23444, 47.35486], + [-67.79046, 47.06636], + [-67.79134, 45.70281], + [-67.13741, 45.13753], + [-66.96466, 44.8097], + [-68.03252, 44.3252], + [-69.06, 43.98], + [-70.11617, 43.68405], + [-70.645476, 43.090238], + [-70.81489, 42.8653], + [-70.825, 42.335], + [-70.495, 41.805], + [-70.08, 41.78], + [-70.185, 42.145], + [-69.88497, 41.92283], + [-69.96503, 41.63717], + [-70.64, 41.475], + [-71.12039, 41.49445], + [-71.86, 41.32], + [-72.295, 41.27], + [-72.87643, 41.22065], + [-73.71, 40.931102], + [-72.24126, 41.11948], + [-71.945, 40.93], + [-73.345, 40.63], + [-73.982, 40.628], + [-73.952325, 40.75075], + [-74.25671, 40.47351], + [-73.96244, 40.42763], + [-74.17838, 39.70926], + [-74.90604, 38.93954], + [-74.98041, 39.1964], + [-75.20002, 39.24845], + [-75.52805, 39.4985], + [-75.32, 38.96], + [-75.071835, 38.782032], + [-75.05673, 38.40412], + [-75.37747, 38.01551], + [-75.94023, 37.21689], + [-76.03127, 37.2566], + [-75.72205, 37.93705], + [-76.23287, 38.319215], + [-76.35, 39.15], + [-76.542725, 38.717615], + [-76.32933, 38.08326], + [-76.989998, 38.239992], + [-76.30162, 37.917945], + [-76.25874, 36.9664], + [-75.9718, 36.89726], + [-75.86804, 36.55125], + [-75.72749, 35.55074], + [-76.36318, 34.80854], + [-77.397635, 34.51201], + [-78.05496, 33.92547], + [-78.55435, 33.86133], + [-79.06067, 33.49395], + [-79.20357, 33.15839], + [-80.301325, 32.509355], + [-80.86498, 32.0333], + [-81.33629, 31.44049], + [-81.49042, 30.72999], + [-81.31371, 30.03552], + [-80.98, 29.18], + [-80.535585, 28.47213], + [-80.53, 28.04], + [-80.056539, 26.88], + [-80.088015, 26.205765], + [-80.13156, 25.816775], + [-80.38103, 25.20616], + [-80.68, 25.08], + [-81.17213, 25.20126], + [-81.33, 25.64], + [-81.71, 25.87], + [-82.24, 26.73], + [-82.70515, 27.49504], + [-82.85526, 27.88624], + [-82.65, 28.55], + [-82.93, 29.1], + [-83.70959, 29.93656], + [-84.1, 30.09], + [-85.10882, 29.63615], + [-85.28784, 29.68612], + [-85.7731, 30.15261], + [-86.4, 30.4], + [-87.53036, 30.27433], + [-88.41782, 30.3849], + [-89.18049, 30.31598], + [-89.593831, 30.159994], + [-89.413735, 29.89419], + [-89.43, 29.48864], + [-89.21767, 29.29108], + [-89.40823, 29.15961], + [-89.77928, 29.30714], + [-90.15463, 29.11743], + [-90.880225, 29.148535], + [-91.626785, 29.677], + [-92.49906, 29.5523], + [-93.22637, 29.78375], + [-93.84842, 29.71363], + [-94.69, 29.48], + [-95.60026, 28.73863], + [-96.59404, 28.30748], + [-97.14, 27.83], + [-97.37, 27.38], + [-97.38, 26.69], + [-97.33, 26.21], + [-97.14, 25.87], + [-97.53, 25.84], + [-98.24, 26.06], + [-99.02, 26.37], + [-99.3, 26.84], + [-99.52, 27.54], + [-100.11, 28.11], + [-100.45584, 28.69612], + [-100.9576, 29.38071], + [-101.6624, 29.7793], + [-102.48, 29.76], + [-103.11, 28.97], + [-103.94, 29.27], + [-104.45697, 29.57196], + [-104.70575, 30.12173], + [-105.03737, 30.64402], + [-105.63159, 31.08383], + [-106.1429, 31.39995], + [-106.50759, 31.75452], + [-108.24, 31.754854], + [-108.24194, 31.34222], + [-109.035, 31.34194], + [-111.02361, 31.33472], + [-113.30498, 32.03914], + [-114.815, 32.52528], + [-114.72139, 32.72083], + [-115.99135, 32.61239], + [-117.12776, 32.53534], + [-117.295938, 33.046225], + [-117.944, 33.621236], + [-118.410602, 33.740909], + [-118.519895, 34.027782], + [-119.081, 34.078], + [-119.438841, 34.348477], + [-120.36778, 34.44711], + [-120.62286, 34.60855], + [-120.74433, 35.15686], + [-121.71457, 36.16153], + [-122.54747, 37.55176], + [-122.51201, 37.78339], + [-122.95319, 38.11371], + [-123.7272, 38.95166], + [-123.86517, 39.76699], + [-124.39807, 40.3132], + [-124.17886, 41.14202], + [-124.2137, 41.99964], + [-124.53284, 42.76599], + [-124.14214, 43.70838], + [-124.020535, 44.615895], + [-123.89893, 45.52341], + [-124.079635, 46.86475], + [-124.39567, 47.72017], + [-124.68721, 48.184433], + [-124.566101, 48.379715], + [-123.12, 48.04], + [-122.58736, 47.096], + [-122.34, 47.36], + [-122.5, 48.18], + [-122.84, 49], + [-120, 49], + [-117.03121, 49], + [-116.04818, 49], + [-113, 49], + [-110.05, 49], + [-107.05, 49], + [-104.04826, 48.99986], + [-100.65, 49], + [-97.22872, 49.0007], + [-95.15907, 49], + [-95.15609, 49.38425], + [-94.81758, 49.38905] + ] + ], + [ + [ + [-153.006314, 57.115842], + [-154.00509, 56.734677], + [-154.516403, 56.992749], + [-154.670993, 57.461196], + [-153.76278, 57.816575], + [-153.228729, 57.968968], + [-152.564791, 57.901427], + [-152.141147, 57.591059], + [-153.006314, 57.115842] + ] + ], + [ + [ + [-165.579164, 59.909987], + [-166.19277, 59.754441], + [-166.848337, 59.941406], + [-167.455277, 60.213069], + [-166.467792, 60.38417], + [-165.67443, 60.293607], + [-165.579164, 59.909987] + ] + ], + [ + [ + [-171.731657, 63.782515], + [-171.114434, 63.592191], + [-170.491112, 63.694975], + [-169.682505, 63.431116], + [-168.689439, 63.297506], + [-168.771941, 63.188598], + [-169.52944, 62.976931], + [-170.290556, 63.194438], + [-170.671386, 63.375822], + [-171.553063, 63.317789], + [-171.791111, 63.405846], + [-171.731657, 63.782515] + ] + ], + [ + [ + [-155.06779, 71.147776], + [-154.344165, 70.696409], + [-153.900006, 70.889989], + [-152.210006, 70.829992], + [-152.270002, 70.600006], + [-150.739992, 70.430017], + [-149.720003, 70.53001], + [-147.613362, 70.214035], + [-145.68999, 70.12001], + [-144.920011, 69.989992], + [-143.589446, 70.152514], + [-142.07251, 69.851938], + [-140.985988, 69.711998], + [-140.985988, 69.711998], + [-140.992499, 66.000029], + [-140.99777, 60.306397], + [-140.012998, 60.276838], + [-139.039, 60.000007], + [-138.34089, 59.56211], + [-137.4525, 58.905], + [-136.47972, 59.46389], + [-135.47583, 59.78778], + [-134.945, 59.27056], + [-134.27111, 58.86111], + [-133.355549, 58.410285], + [-132.73042, 57.69289], + [-131.70781, 56.55212], + [-130.00778, 55.91583], + [-129.979994, 55.284998], + [-130.53611, 54.802753], + [-131.085818, 55.178906], + [-131.967211, 55.497776], + [-132.250011, 56.369996], + [-133.539181, 57.178887], + [-134.078063, 58.123068], + [-135.038211, 58.187715], + [-136.628062, 58.212209], + [-137.800006, 58.499995], + [-139.867787, 59.537762], + [-140.825274, 59.727517], + [-142.574444, 60.084447], + [-143.958881, 59.99918], + [-145.925557, 60.45861], + [-147.114374, 60.884656], + [-148.224306, 60.672989], + [-148.018066, 59.978329], + [-148.570823, 59.914173], + [-149.727858, 59.705658], + [-150.608243, 59.368211], + [-151.716393, 59.155821], + [-151.859433, 59.744984], + [-151.409719, 60.725803], + [-150.346941, 61.033588], + [-150.621111, 61.284425], + [-151.895839, 60.727198], + [-152.57833, 60.061657], + [-154.019172, 59.350279], + [-153.287511, 58.864728], + [-154.232492, 58.146374], + [-155.307491, 57.727795], + [-156.308335, 57.422774], + [-156.556097, 56.979985], + [-158.117217, 56.463608], + [-158.433321, 55.994154], + [-159.603327, 55.566686], + [-160.28972, 55.643581], + [-161.223048, 55.364735], + [-162.237766, 55.024187], + [-163.069447, 54.689737], + [-164.785569, 54.404173], + [-164.942226, 54.572225], + [-163.84834, 55.039431], + [-162.870001, 55.348043], + [-161.804175, 55.894986], + [-160.563605, 56.008055], + [-160.07056, 56.418055], + [-158.684443, 57.016675], + [-158.461097, 57.216921], + [-157.72277, 57.570001], + [-157.550274, 58.328326], + [-157.041675, 58.918885], + [-158.194731, 58.615802], + [-158.517218, 58.787781], + [-159.058606, 58.424186], + [-159.711667, 58.93139], + [-159.981289, 58.572549], + [-160.355271, 59.071123], + [-161.355003, 58.670838], + [-161.968894, 58.671665], + [-162.054987, 59.266925], + [-161.874171, 59.633621], + [-162.518059, 59.989724], + [-163.818341, 59.798056], + [-164.662218, 60.267484], + [-165.346388, 60.507496], + [-165.350832, 61.073895], + [-166.121379, 61.500019], + [-165.734452, 62.074997], + [-164.919179, 62.633076], + [-164.562508, 63.146378], + [-163.753332, 63.219449], + [-163.067224, 63.059459], + [-162.260555, 63.541936], + [-161.53445, 63.455817], + [-160.772507, 63.766108], + [-160.958335, 64.222799], + [-161.518068, 64.402788], + [-160.777778, 64.788604], + [-161.391926, 64.777235], + [-162.45305, 64.559445], + [-162.757786, 64.338605], + [-163.546394, 64.55916], + [-164.96083, 64.446945], + [-166.425288, 64.686672], + [-166.845004, 65.088896], + [-168.11056, 65.669997], + [-166.705271, 66.088318], + [-164.47471, 66.57666], + [-163.652512, 66.57666], + [-163.788602, 66.077207], + [-161.677774, 66.11612], + [-162.489715, 66.735565], + [-163.719717, 67.116395], + [-164.430991, 67.616338], + [-165.390287, 68.042772], + [-166.764441, 68.358877], + [-166.204707, 68.883031], + [-164.430811, 68.915535], + [-163.168614, 69.371115], + [-162.930566, 69.858062], + [-161.908897, 70.33333], + [-160.934797, 70.44769], + [-159.039176, 70.891642], + [-158.119723, 70.824721], + [-156.580825, 71.357764], + [-155.06779, 71.147776] + ] + ] + ] + }, + "type": "Feature", + "id": "USA", + "properties": { "name": "United States of America", "id": "USA", "centroid": [-77.02, 39.91] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [66.518607, 37.362784], + [66.54615, 37.974685], + [65.215999, 38.402695], + [64.170223, 38.892407], + [63.518015, 39.363257], + [62.37426, 40.053886], + [61.882714, 41.084857], + [61.547179, 41.26637], + [60.465953, 41.220327], + [60.083341, 41.425146], + [59.976422, 42.223082], + [58.629011, 42.751551], + [57.78653, 42.170553], + [56.932215, 41.826026], + [57.096391, 41.32231], + [55.968191, 41.308642], + [55.928917, 44.995858], + [58.503127, 45.586804], + [58.689989, 45.500014], + [60.239972, 44.784037], + [61.05832, 44.405817], + [62.0133, 43.504477], + [63.185787, 43.650075], + [64.900824, 43.728081], + [66.098012, 42.99766], + [66.023392, 41.994646], + [66.510649, 41.987644], + [66.714047, 41.168444], + [67.985856, 41.135991], + [68.259896, 40.662325], + [68.632483, 40.668681], + [69.070027, 41.384244], + [70.388965, 42.081308], + [70.962315, 42.266154], + [71.259248, 42.167711], + [70.420022, 41.519998], + [71.157859, 41.143587], + [71.870115, 41.3929], + [73.055417, 40.866033], + [71.774875, 40.145844], + [71.014198, 40.244366], + [70.601407, 40.218527], + [70.45816, 40.496495], + [70.666622, 40.960213], + [69.329495, 40.727824], + [69.011633, 40.086158], + [68.536416, 39.533453], + [67.701429, 39.580478], + [67.44222, 39.140144], + [68.176025, 38.901553], + [68.392033, 38.157025], + [67.83, 37.144994], + [67.075782, 37.356144], + [66.518607, 37.362784] + ] + ] + }, + "type": "Feature", + "id": "UZB", + "properties": { "name": "Uzbekistan", "id": "UZB", "centroid": [69.1, 41.2] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-71.331584, 11.776284], + [-71.360006, 11.539994], + [-71.94705, 11.423282], + [-71.620868, 10.96946], + [-71.633064, 10.446494], + [-72.074174, 9.865651], + [-71.695644, 9.072263], + [-71.264559, 9.137195], + [-71.039999, 9.859993], + [-71.350084, 10.211935], + [-71.400623, 10.968969], + [-70.155299, 11.375482], + [-70.293843, 11.846822], + [-69.943245, 12.162307], + [-69.5843, 11.459611], + [-68.882999, 11.443385], + [-68.233271, 10.885744], + [-68.194127, 10.554653], + [-67.296249, 10.545868], + [-66.227864, 10.648627], + [-65.655238, 10.200799], + [-64.890452, 10.077215], + [-64.329479, 10.389599], + [-64.318007, 10.641418], + [-63.079322, 10.701724], + [-61.880946, 10.715625], + [-62.730119, 10.420269], + [-62.388512, 9.948204], + [-61.588767, 9.873067], + [-60.830597, 9.38134], + [-60.671252, 8.580174], + [-60.150096, 8.602757], + [-59.758285, 8.367035], + [-60.550588, 7.779603], + [-60.637973, 7.415], + [-60.295668, 7.043911], + [-60.543999, 6.856584], + [-61.159336, 6.696077], + [-61.139415, 6.234297], + [-61.410303, 5.959068], + [-60.733574, 5.200277], + [-60.601179, 4.918098], + [-60.966893, 4.536468], + [-62.08543, 4.162124], + [-62.804533, 4.006965], + [-63.093198, 3.770571], + [-63.888343, 4.02053], + [-64.628659, 4.148481], + [-64.816064, 4.056445], + [-64.368494, 3.79721], + [-64.408828, 3.126786], + [-64.269999, 2.497006], + [-63.422867, 2.411068], + [-63.368788, 2.2009], + [-64.083085, 1.916369], + [-64.199306, 1.492855], + [-64.611012, 1.328731], + [-65.354713, 1.095282], + [-65.548267, 0.789254], + [-66.325765, 0.724452], + [-66.876326, 1.253361], + [-67.181294, 2.250638], + [-67.447092, 2.600281], + [-67.809938, 2.820655], + [-67.303173, 3.318454], + [-67.337564, 3.542342], + [-67.621836, 3.839482], + [-67.823012, 4.503937], + [-67.744697, 5.221129], + [-67.521532, 5.55687], + [-67.34144, 6.095468], + [-67.695087, 6.267318], + [-68.265052, 6.153268], + [-68.985319, 6.206805], + [-69.38948, 6.099861], + [-70.093313, 6.960376], + [-70.674234, 7.087785], + [-71.960176, 6.991615], + [-72.198352, 7.340431], + [-72.444487, 7.423785], + [-72.479679, 7.632506], + [-72.360901, 8.002638], + [-72.439862, 8.405275], + [-72.660495, 8.625288], + [-72.78873, 9.085027], + [-73.304952, 9.152], + [-73.027604, 9.73677], + [-72.905286, 10.450344], + [-72.614658, 10.821975], + [-72.227575, 11.108702], + [-71.973922, 11.608672], + [-71.331584, 11.776284] + ] + ] + }, + "type": "Feature", + "id": "VEN", + "properties": { "name": "Venezuela", "id": "VEN", "centroid": [-66.55, 10.3] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [108.05018, 21.55238], + [106.715068, 20.696851], + [105.881682, 19.75205], + [105.662006, 19.058165], + [106.426817, 18.004121], + [107.361954, 16.697457], + [108.269495, 16.079742], + [108.877107, 15.276691], + [109.33527, 13.426028], + [109.200136, 11.666859], + [108.36613, 11.008321], + [107.220929, 10.364484], + [106.405113, 9.53084], + [105.158264, 8.59976], + [104.795185, 9.241038], + [105.076202, 9.918491], + [104.334335, 10.486544], + [105.199915, 10.88931], + [106.24967, 10.961812], + [105.810524, 11.567615], + [107.491403, 12.337206], + [107.614548, 13.535531], + [107.382727, 14.202441], + [107.564525, 15.202173], + [107.312706, 15.908538], + [106.556008, 16.604284], + [105.925762, 17.485315], + [105.094598, 18.666975], + [103.896532, 19.265181], + [104.183388, 19.624668], + [104.822574, 19.886642], + [104.435, 20.758733], + [103.203861, 20.766562], + [102.754896, 21.675137], + [102.170436, 22.464753], + [102.706992, 22.708795], + [103.504515, 22.703757], + [104.476858, 22.81915], + [105.329209, 23.352063], + [105.811247, 22.976892], + [106.725403, 22.794268], + [106.567273, 22.218205], + [107.04342, 21.811899], + [108.05018, 21.55238] + ] + ] + }, + "type": "Feature", + "id": "VNM", + "properties": { "name": "Vietnam", "id": "VNM", "centroid": [105.55, 21.05] } + }, + { + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [167.844877, -16.466333], + [167.515181, -16.59785], + [167.180008, -16.159995], + [167.216801, -15.891846], + [167.844877, -16.466333] + ] + ], + [ + [ + [167.107712, -14.93392], + [167.270028, -15.740021], + [167.001207, -15.614602], + [166.793158, -15.668811], + [166.649859, -15.392704], + [166.629137, -14.626497], + [167.107712, -14.93392] + ] + ] + ] + }, + "type": "Feature", + "id": "VUT", + "properties": { "name": "Vanuatu", "id": "VUT", "centroid": [168.18, -17.45] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [35.545665, 32.393992], + [35.545252, 31.782505], + [35.397561, 31.489086], + [34.927408, 31.353435], + [34.970507, 31.616778], + [35.225892, 31.754341], + [34.974641, 31.866582], + [35.18393, 32.532511], + [35.545665, 32.393992] + ] + ] + }, + "type": "Feature", + "id": "PSE", + "properties": { "name": "West Bank", "id": "PSE", "centroid": [35.14, 31.47] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [53.108573, 16.651051], + [52.385206, 16.382411], + [52.191729, 15.938433], + [52.168165, 15.59742], + [51.172515, 15.17525], + [49.574576, 14.708767], + [48.679231, 14.003202], + [48.238947, 13.94809], + [47.938914, 14.007233], + [47.354454, 13.59222], + [46.717076, 13.399699], + [45.877593, 13.347764], + [45.62505, 13.290946], + [45.406459, 13.026905], + [45.144356, 12.953938], + [44.989533, 12.699587], + [44.494576, 12.721653], + [44.175113, 12.58595], + [43.482959, 12.6368], + [43.222871, 13.22095], + [43.251448, 13.767584], + [43.087944, 14.06263], + [42.892245, 14.802249], + [42.604873, 15.213335], + [42.805015, 15.261963], + [42.702438, 15.718886], + [42.823671, 15.911742], + [42.779332, 16.347891], + [43.218375, 16.66689], + [43.115798, 17.08844], + [43.380794, 17.579987], + [43.791519, 17.319977], + [44.062613, 17.410359], + [45.216651, 17.433329], + [45.399999, 17.333335], + [46.366659, 17.233315], + [46.749994, 17.283338], + [47.000005, 16.949999], + [47.466695, 17.116682], + [48.183344, 18.166669], + [49.116672, 18.616668], + [52.00001, 19.000003], + [52.782184, 17.349742], + [53.108573, 16.651051] + ] + ] + }, + "type": "Feature", + "id": "YEM", + "properties": { "name": "Yemen", "id": "YEM", "centroid": [44.2, 15.35] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [31.521001, -29.257387], + [31.325561, -29.401978], + [30.901763, -29.909957], + [30.622813, -30.423776], + [30.055716, -31.140269], + [28.925553, -32.172041], + [28.219756, -32.771953], + [27.464608, -33.226964], + [26.419452, -33.61495], + [25.909664, -33.66704], + [25.780628, -33.944646], + [25.172862, -33.796851], + [24.677853, -33.987176], + [23.594043, -33.794474], + [22.988189, -33.916431], + [22.574157, -33.864083], + [21.542799, -34.258839], + [20.689053, -34.417175], + [20.071261, -34.795137], + [19.616405, -34.819166], + [19.193278, -34.462599], + [18.855315, -34.444306], + [18.424643, -33.997873], + [18.377411, -34.136521], + [18.244499, -33.867752], + [18.25008, -33.281431], + [17.92519, -32.611291], + [18.24791, -32.429131], + [18.221762, -31.661633], + [17.566918, -30.725721], + [17.064416, -29.878641], + [17.062918, -29.875954], + [16.344977, -28.576705], + [16.824017, -28.082162], + [17.218929, -28.355943], + [17.387497, -28.783514], + [17.836152, -28.856378], + [18.464899, -29.045462], + [19.002127, -28.972443], + [19.894734, -28.461105], + [19.895768, -24.76779], + [20.165726, -24.917962], + [20.758609, -25.868136], + [20.66647, -26.477453], + [20.889609, -26.828543], + [21.605896, -26.726534], + [22.105969, -26.280256], + [22.579532, -25.979448], + [22.824271, -25.500459], + [23.312097, -25.26869], + [23.73357, -25.390129], + [24.211267, -25.670216], + [25.025171, -25.71967], + [25.664666, -25.486816], + [25.765849, -25.174845], + [25.941652, -24.696373], + [26.485753, -24.616327], + [26.786407, -24.240691], + [27.11941, -23.574323], + [28.017236, -22.827754], + [29.432188, -22.091313], + [29.839037, -22.102216], + [30.322883, -22.271612], + [30.659865, -22.151567], + [31.191409, -22.25151], + [31.670398, -23.658969], + [31.930589, -24.369417], + [31.752408, -25.484284], + [31.837778, -25.843332], + [31.333158, -25.660191], + [31.04408, -25.731452], + [30.949667, -26.022649], + [30.676609, -26.398078], + [30.685962, -26.743845], + [31.282773, -27.285879], + [31.86806, -27.177927], + [32.071665, -26.73382], + [32.83012, -26.742192], + [32.580265, -27.470158], + [32.462133, -28.301011], + [32.203389, -28.752405], + [31.521001, -29.257387] + ], + [ + [28.978263, -28.955597], + [28.5417, -28.647502], + [28.074338, -28.851469], + [27.532511, -29.242711], + [26.999262, -29.875954], + [27.749397, -30.645106], + [28.107205, -30.545732], + [28.291069, -30.226217], + [28.8484, -30.070051], + [29.018415, -29.743766], + [29.325166, -29.257387], + [28.978263, -28.955597] + ] + ] + }, + "type": "Feature", + "id": "ZAF", + "properties": { "name": "South Africa", "id": "ZAF", "centroid": [28.11, -25.44] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [32.759375, -9.230599], + [33.231388, -9.676722], + [33.485688, -10.525559], + [33.31531, -10.79655], + [33.114289, -11.607198], + [33.306422, -12.435778], + [32.991764, -12.783871], + [32.688165, -13.712858], + [33.214025, -13.97186], + [30.179481, -14.796099], + [30.274256, -15.507787], + [29.516834, -15.644678], + [28.947463, -16.043051], + [28.825869, -16.389749], + [28.467906, -16.4684], + [27.598243, -17.290831], + [27.044427, -17.938026], + [26.706773, -17.961229], + [26.381935, -17.846042], + [25.264226, -17.73654], + [25.084443, -17.661816], + [25.07695, -17.578823], + [24.682349, -17.353411], + [24.033862, -17.295843], + [23.215048, -17.523116], + [22.562478, -16.898451], + [21.887843, -16.08031], + [21.933886, -12.898437], + [24.016137, -12.911046], + [23.930922, -12.565848], + [24.079905, -12.191297], + [23.904154, -11.722282], + [24.017894, -11.237298], + [23.912215, -10.926826], + [24.257155, -10.951993], + [24.314516, -11.262826], + [24.78317, -11.238694], + [25.418118, -11.330936], + [25.75231, -11.784965], + [26.553088, -11.92444], + [27.16442, -11.608748], + [27.388799, -12.132747], + [28.155109, -12.272481], + [28.523562, -12.698604], + [28.934286, -13.248958], + [29.699614, -13.257227], + [29.616001, -12.178895], + [29.341548, -12.360744], + [28.642417, -11.971569], + [28.372253, -11.793647], + [28.49607, -10.789884], + [28.673682, -9.605925], + [28.449871, -9.164918], + [28.734867, -8.526559], + [29.002912, -8.407032], + [30.346086, -8.238257], + [30.740015, -8.340007], + [31.157751, -8.594579], + [31.556348, -8.762049], + [32.191865, -8.930359], + [32.759375, -9.230599] + ] + ] + }, + "type": "Feature", + "id": "ZMB", + "properties": { "name": "Zambia", "id": "ZMB", "centroid": [28.16, -15.28] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [103.9697265625, 1.331445312499994], + [103.65019531249999, 1.325537109374991], + [103.81796875000003, 1.447070312499989], + [103.9697265625, 1.331445312499994] + ] + ] + }, + "type": "Feature", + "id": "SGP", + "properties": { "childNum": 1, "name": "Singapore", "id": "SGP", "centroid": [103.51, 1.18] } + }, + { + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [31.191409, -22.25151], + [30.659865, -22.151567], + [30.322883, -22.271612], + [29.839037, -22.102216], + [29.432188, -22.091313], + [28.794656, -21.639454], + [28.02137, -21.485975], + [27.727228, -20.851802], + [27.724747, -20.499059], + [27.296505, -20.39152], + [26.164791, -19.293086], + [25.850391, -18.714413], + [25.649163, -18.536026], + [25.264226, -17.73654], + [26.381935, -17.846042], + [26.706773, -17.961229], + [27.044427, -17.938026], + [27.598243, -17.290831], + [28.467906, -16.4684], + [28.825869, -16.389749], + [28.947463, -16.043051], + [29.516834, -15.644678], + [30.274256, -15.507787], + [30.338955, -15.880839], + [31.173064, -15.860944], + [31.636498, -16.07199], + [31.852041, -16.319417], + [32.328239, -16.392074], + [32.847639, -16.713398], + [32.849861, -17.979057], + [32.654886, -18.67209], + [32.611994, -19.419383], + [32.772708, -19.715592], + [32.659743, -20.30429], + [32.508693, -20.395292], + [32.244988, -21.116489], + [31.191409, -22.25151] + ] + ] + }, + "type": "Feature", + "id": "ZWE", + "properties": { "name": "Zimbabwe", "id": "ZWE", "centroid": [31.02, -17.43] } + } + ], + "offset": { "y": 90, "x": 170 } +} diff --git a/src/components/breadcrumb/index.vue b/src/components/breadcrumb/index.vue new file mode 100644 index 0000000..ae12b39 --- /dev/null +++ b/src/components/breadcrumb/index.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/src/components/chart/index.vue b/src/components/chart/index.vue new file mode 100644 index 0000000..353f172 --- /dev/null +++ b/src/components/chart/index.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/src/components/footer/index.vue b/src/components/footer/index.vue new file mode 100644 index 0000000..c7c6665 --- /dev/null +++ b/src/components/footer/index.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/components/global-setting/block.vue b/src/components/global-setting/block.vue new file mode 100644 index 0000000..129f276 --- /dev/null +++ b/src/components/global-setting/block.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/components/global-setting/form-wrapper.vue b/src/components/global-setting/form-wrapper.vue new file mode 100644 index 0000000..f793508 --- /dev/null +++ b/src/components/global-setting/form-wrapper.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/components/global-setting/index.vue b/src/components/global-setting/index.vue new file mode 100644 index 0000000..032b480 --- /dev/null +++ b/src/components/global-setting/index.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/src/components/index.ts b/src/components/index.ts new file mode 100644 index 0000000..35266ba --- /dev/null +++ b/src/components/index.ts @@ -0,0 +1,29 @@ +import { BarChart, LineChart, PieChart, RadarChart } from 'echarts/charts' +import { DataZoomComponent, GraphicComponent, GridComponent, LegendComponent, TooltipComponent } from 'echarts/components' +import { use } from 'echarts/core' +import { CanvasRenderer } from 'echarts/renderers' +import { App } from 'vue' +import Breadcrumb from './breadcrumb/index.vue' +import Chart from './chart/index.vue' + +// Manually introduce ECharts modules to reduce packing size + +use([ + CanvasRenderer, + BarChart, + LineChart, + PieChart, + RadarChart, + GridComponent, + TooltipComponent, + LegendComponent, + DataZoomComponent, + GraphicComponent, +]) + +export default { + install(Vue: App) { + Vue.component('Chart', Chart) + Vue.component('Breadcrumb', Breadcrumb) + }, +} diff --git a/src/components/menu/index.vue b/src/components/menu/index.vue new file mode 100644 index 0000000..4cbd243 --- /dev/null +++ b/src/components/menu/index.vue @@ -0,0 +1,151 @@ + + + diff --git a/src/components/menu/use-menu-tree.ts b/src/components/menu/use-menu-tree.ts new file mode 100644 index 0000000..7f88f03 --- /dev/null +++ b/src/components/menu/use-menu-tree.ts @@ -0,0 +1,67 @@ +import usePermission from '@/hooks/permission' +import appClientMenus from '@/router/app-menus' +import { useAppStore } from '@/store' +import { cloneDeep } from 'lodash' +import { computed } from 'vue' +import { RouteRecordNormalized, RouteRecordRaw } from 'vue-router' + +export default function useMenuTree() { + const permission = usePermission() + const appStore = useAppStore() + const appRoute = computed(() => { + if (appStore.menuFromServer) { + return appStore.appAsyncMenus + } + return appClientMenus + }) + const menuTree = computed(() => { + const copyRouter = cloneDeep(appRoute.value) as RouteRecordNormalized[] + copyRouter.sort((a: RouteRecordNormalized, b: RouteRecordNormalized) => { + return (a.meta.order || 0) - (b.meta.order || 0) + }) + function travel(_routes: RouteRecordRaw[], layer: number) { + if (!_routes) return null + + const collector: any = _routes.map((element) => { + // no access + if (!permission.accessRouter(element)) { + return null + } + + // leaf node + if (element.meta?.hideChildrenInMenu || !element.children) { + element.children = [] + return element + } + + // route filter hideInMenu true + element.children = element.children.filter((x) => x.meta?.hideInMenu !== true) + + // Associated child node + const subItem = travel(element.children, layer + 1) + + if (subItem.length) { + element.children = subItem + return element + } + // the else logic + if (layer > 1) { + element.children = subItem + return element + } + + if (element.meta?.hideInMenu === false) { + return element + } + + return null + }) + return collector.filter(Boolean) + } + return travel(copyRouter, 0) + }) + + return { + menuTree, + } +} diff --git a/src/components/message-box/index.vue b/src/components/message-box/index.vue new file mode 100644 index 0000000..4e80410 --- /dev/null +++ b/src/components/message-box/index.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/components/message-box/list.vue b/src/components/message-box/list.vue new file mode 100644 index 0000000..e0e6c98 --- /dev/null +++ b/src/components/message-box/list.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/src/components/message-box/locale/en-US.ts b/src/components/message-box/locale/en-US.ts new file mode 100644 index 0000000..92d8583 --- /dev/null +++ b/src/components/message-box/locale/en-US.ts @@ -0,0 +1,13 @@ +export default { + 'messageBox.tab.title.message': 'Message', + 'messageBox.tab.title.notice': 'Notice', + 'messageBox.tab.title.todo': 'Todo', + 'messageBox.tab.button': 'empty', + 'messageBox.allRead': 'All Read', + 'messageBox.viewMore': 'View More', + 'messageBox.noContent': 'No Content', + 'messageBox.switchRoles': 'Switch Roles', + 'messageBox.userCenter': 'User Center', + 'messageBox.userSettings': 'User Settings', + 'messageBox.logout': 'Logout', +} diff --git a/src/components/message-box/locale/zh-CN.ts b/src/components/message-box/locale/zh-CN.ts new file mode 100644 index 0000000..dca6efb --- /dev/null +++ b/src/components/message-box/locale/zh-CN.ts @@ -0,0 +1,13 @@ +export default { + 'messageBox.tab.title.message': '消息', + 'messageBox.tab.title.notice': '通知', + 'messageBox.tab.title.todo': '待办', + 'messageBox.tab.button': '清空', + 'messageBox.allRead': '全部已读', + 'messageBox.viewMore': '查看更多', + 'messageBox.noContent': '暂无内容', + 'messageBox.switchRoles': '切换角色', + 'messageBox.userCenter': '用户中心', + 'messageBox.userSettings': '用户设置', + 'messageBox.logout': '登出登录', +} diff --git a/src/components/navbar/index.vue b/src/components/navbar/index.vue new file mode 100644 index 0000000..d8a7502 --- /dev/null +++ b/src/components/navbar/index.vue @@ -0,0 +1,252 @@ + + + + + + + diff --git a/src/components/tab-bar/index.vue b/src/components/tab-bar/index.vue new file mode 100644 index 0000000..01eccc4 --- /dev/null +++ b/src/components/tab-bar/index.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/src/components/tab-bar/readme.md b/src/components/tab-bar/readme.md new file mode 100644 index 0000000..4e4ac25 --- /dev/null +++ b/src/components/tab-bar/readme.md @@ -0,0 +1,11 @@ +## 组件说明 + +该组件非官方最终设计规范,以单独组件存在。 + +同时仅仅提供最基本的功能,后续进行优化及更改。 + +## Component description + +The component unofficial final design specification exists as a separate component. + +At the same time, only the most basic functions are provided, and subsequent optimizations and changes will be made. diff --git a/src/components/tab-bar/tab-item.vue b/src/components/tab-bar/tab-item.vue new file mode 100644 index 0000000..bebc369 --- /dev/null +++ b/src/components/tab-bar/tab-item.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/src/config/settings.json b/src/config/settings.json new file mode 100644 index 0000000..f665513 --- /dev/null +++ b/src/config/settings.json @@ -0,0 +1,17 @@ +{ + "theme": "light", + "colorWeak": false, + "navbar": true, + "menu": true, + "topMenu": false, + "hideMenu": false, + "menuCollapse": false, + "footer": true, + "themeColor": "#165DFF", + "menuWidth": 220, + "globalSettings": false, + "device": "desktop", + "tabBar": true, + "menuFromServer": false, + "serverMenu": [] +} diff --git a/src/directive/index.ts b/src/directive/index.ts new file mode 100644 index 0000000..1fbd64f --- /dev/null +++ b/src/directive/index.ts @@ -0,0 +1,8 @@ +import { App } from 'vue' +import permission from './permission' + +export default { + install(Vue: App) { + Vue.directive('permission', permission) + }, +} diff --git a/src/directive/permission/index.ts b/src/directive/permission/index.ts new file mode 100644 index 0000000..e1f5386 --- /dev/null +++ b/src/directive/permission/index.ts @@ -0,0 +1,30 @@ +import { DirectiveBinding } from 'vue' +import { useUserStore } from '@/store' + +function checkPermission(el: HTMLElement, binding: DirectiveBinding) { + const { value } = binding + const userStore = useUserStore() + const { role } = userStore + + if (Array.isArray(value)) { + if (value.length > 0) { + const permissionValues = value + + const hasPermission = permissionValues.includes(role) + if (!hasPermission && el.parentNode) { + el.parentNode.removeChild(el) + } + } + } else { + throw new Error(`need roles! Like v-permission="['admin','user']"`) + } +} + +export default { + mounted(el: HTMLElement, binding: DirectiveBinding) { + checkPermission(el, binding) + }, + updated(el: HTMLElement, binding: DirectiveBinding) { + checkPermission(el, binding) + }, +} diff --git a/src/env.d.ts b/src/env.d.ts new file mode 100644 index 0000000..6d86568 --- /dev/null +++ b/src/env.d.ts @@ -0,0 +1,7 @@ + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/src/hooks/chart-option.ts b/src/hooks/chart-option.ts new file mode 100644 index 0000000..48dff7f --- /dev/null +++ b/src/hooks/chart-option.ts @@ -0,0 +1,27 @@ +import { useAppStore } from '@/store' +import { EChartsOption } from 'echarts' +import { computed } from 'vue' + +// for code hints +// import { SeriesOption } from 'echarts'; +// Because there are so many configuration items, this provides a relatively convenient code hint. +// When using vue, pay attention to the reactive issues. It is necessary to ensure that corresponding functions can be triggered, TypeScript does not report errors, and code writing is convenient. +interface optionsFn { + (isDark: boolean): EChartsOption +} + +export default function useChartOption(sourceOption: optionsFn) { + const appStore = useAppStore() + const isDark = computed(() => { + return appStore.theme === 'dark' + }) + // echarts support https://echarts.apache.org/zh/theme-builder.html + // It's not used here + // TODO echarts themes + const chartOption = computed(() => { + return sourceOption(isDark.value) + }) + return { + chartOption, + } +} diff --git a/src/hooks/loading.ts b/src/hooks/loading.ts new file mode 100644 index 0000000..2a94ef3 --- /dev/null +++ b/src/hooks/loading.ts @@ -0,0 +1,16 @@ +import { ref } from 'vue' + +export default function useLoading(initValue = false) { + const loading = ref(initValue) + const setLoading = (value: boolean) => { + loading.value = value + } + const toggle = () => { + loading.value = !loading.value + } + return { + loading, + setLoading, + toggle, + } +} diff --git a/src/hooks/locale.ts b/src/hooks/locale.ts new file mode 100644 index 0000000..e95f840 --- /dev/null +++ b/src/hooks/locale.ts @@ -0,0 +1,22 @@ +import { Message } from '@arco-design/web-vue' +import { computed } from 'vue' +import { useI18n } from 'vue-i18n' + +export default function useLocale() { + const i18 = useI18n() + const currentLocale = computed(() => { + return i18.locale.value + }) + const changeLocale = (value: string) => { + if (i18.locale.value === value) { + return + } + i18.locale.value = value + localStorage.setItem('arco-locale', value) + Message.success(i18.t('navbar.action.locale')) + } + return { + currentLocale, + changeLocale, + } +} diff --git a/src/hooks/permission.ts b/src/hooks/permission.ts new file mode 100644 index 0000000..2164a4e --- /dev/null +++ b/src/hooks/permission.ts @@ -0,0 +1,30 @@ +import { RouteLocationNormalized, RouteRecordRaw } from 'vue-router' +import { useUserStore } from '@/store' + +export default function usePermission() { + const userStore = useUserStore() + return { + accessRouter(route: RouteLocationNormalized | RouteRecordRaw) { + return ( + !route.meta?.requiresAuth || !route.meta?.roles || route.meta?.roles?.includes('*') || route.meta?.roles?.includes(userStore.role) + ) + }, + findFirstPermissionRoute(_routers: any, role = 'admin') { + const cloneRouters = [..._routers] + while (cloneRouters.length) { + const firstElement = cloneRouters.shift() + if ( + firstElement?.meta?.roles?.find((el: string[]) => { + return el.includes('*') || el.includes(role) + }) + ) + return { name: firstElement.name } + if (firstElement?.children) { + cloneRouters.push(...firstElement.children) + } + } + return null + }, + // You can add any rules you want + } +} diff --git a/src/hooks/request.ts b/src/hooks/request.ts new file mode 100644 index 0000000..12ab27d --- /dev/null +++ b/src/hooks/request.ts @@ -0,0 +1,26 @@ +import { ref, UnwrapRef } from 'vue' +import { AxiosResponse } from 'axios' +import { HttpResponse } from '@/api/interceptor' +import useLoading from './loading' + +// use to fetch list +// Don't use async function. It doesn't work in async function. +// Use the bind function to add parameters +// example: useRequest(api.bind(null, {})) + +export default function useRequest( + api: () => Promise>, + defaultValue = [] as unknown as T, + isLoading = true +) { + const { loading, setLoading } = useLoading(isLoading) + const response = ref(defaultValue) + api() + .then((res) => { + response.value = res.data as unknown as UnwrapRef + }) + .finally(() => { + setLoading(false) + }) + return { loading, response } +} diff --git a/src/hooks/responsive.ts b/src/hooks/responsive.ts new file mode 100644 index 0000000..b3fe47c --- /dev/null +++ b/src/hooks/responsive.ts @@ -0,0 +1,32 @@ +import { useAppStore } from '@/store' +import { addEventListen, removeEventListen } from '@/utils/event' +import { useDebounceFn } from '@vueuse/core' +import { onBeforeMount, onBeforeUnmount, onMounted } from 'vue' + +const WIDTH = 992 // https://arco.design/vue/component/grid#responsivevalue + +function queryDevice() { + const rect = document.body.getBoundingClientRect() + return rect.width - 1 < WIDTH +} + +export default function useResponsive(immediate?: boolean) { + const appStore = useAppStore() + function resizeHandler() { + if (!document.hidden) { + const isMobile = queryDevice() + appStore.toggleDevice(isMobile ? 'mobile' : 'desktop') + appStore.toggleMenu(isMobile) + } + } + const debounceFn = useDebounceFn(resizeHandler, 100) + onMounted(() => { + if (immediate) debounceFn() + }) + onBeforeMount(() => { + addEventListen(window, 'resize', debounceFn) + }) + onBeforeUnmount(() => { + removeEventListen(window, 'resize', debounceFn) + }) +} diff --git a/src/hooks/themes.ts b/src/hooks/themes.ts new file mode 100644 index 0000000..63222ff --- /dev/null +++ b/src/hooks/themes.ts @@ -0,0 +1,12 @@ +import { computed } from 'vue' +import { useAppStore } from '@/store' + +export default function useThemes() { + const appStore = useAppStore() + const isDark = computed(() => { + return appStore.theme === 'dark' + }) + return { + isDark, + } +} diff --git a/src/hooks/user.ts b/src/hooks/user.ts new file mode 100644 index 0000000..be55e1c --- /dev/null +++ b/src/hooks/user.ts @@ -0,0 +1,24 @@ +import { useRouter } from 'vue-router' +import { Message } from '@arco-design/web-vue' + +import { useUserStore } from '@/store' + +export default function useUser() { + const router = useRouter() + const userStore = useUserStore() + const logout = async (logoutTo?: string) => { + await userStore.logout() + const currentRoute = router.currentRoute.value + Message.success('登出成功') + router.push({ + name: logoutTo && typeof logoutTo === 'string' ? logoutTo : 'login', + query: { + ...router.currentRoute.value.query, + redirect: currentRoute.name as string, + }, + }) + } + return { + logout, + } +} diff --git a/src/hooks/visible.ts b/src/hooks/visible.ts new file mode 100644 index 0000000..d04e76b --- /dev/null +++ b/src/hooks/visible.ts @@ -0,0 +1,16 @@ +import { ref } from 'vue' + +export default function useVisible(initValue = false) { + const visible = ref(initValue) + const setVisible = (value: boolean) => { + visible.value = value + } + const toggle = () => { + visible.value = !visible.value + } + return { + visible, + setVisible, + toggle, + } +} diff --git a/src/layout/default-layout.vue b/src/layout/default-layout.vue new file mode 100644 index 0000000..f248751 --- /dev/null +++ b/src/layout/default-layout.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/src/layout/page-layout.vue b/src/layout/page-layout.vue new file mode 100644 index 0000000..885592b --- /dev/null +++ b/src/layout/page-layout.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/src/locale/en-US.ts b/src/locale/en-US.ts new file mode 100644 index 0000000..3dfbb25 --- /dev/null +++ b/src/locale/en-US.ts @@ -0,0 +1,57 @@ +import localeMessageBox from '@/components/message-box/locale/en-US' +import localeLogin from '@/views/login/locale/en-US' + +import localeWorkplace from '@/views/dashboard/workplace/locale/en-US' +/** simple */ +import localeMonitor from '@/views/dashboard/monitor/locale/en-US' + +import localeCardList from '@/views/list/card/locale/en-US' +import localeSearchTable from '@/views/list/search-table/locale/en-US' + +import localeBasicProfile from '@/views/profile/basic/locale/en-US' + +import localeDataAnalysis from '@/views/visualization/data-analysis/locale/en-US' +import localeMultiDAnalysis from '@/views/visualization/multi-dimension-data-analysis/locale/en-US' + +import locale403 from '@/views/exception/403/locale/en-US' +import locale404 from '@/views/exception/404/locale/en-US' +import locale500 from '@/views/exception/500/locale/en-US' + +import localeUserInfo from '@/views/user/info/locale/en-US' +import localeUserSetting from '@/views/user/setting/locale/en-US' +/** simple end */ +import localeSettings from './en-US/settings' + +export default { + 'menu.dashboard': 'Dashboard', + 'menu.server.dashboard': 'Dashboard-Server', + 'menu.server.workplace': 'Workplace-Server', + 'menu.server.monitor': 'Monitor-Server', + 'menu.list': 'List', + 'menu.result': 'Result', + 'menu.exception': 'Exception', + 'menu.profile': 'Profile', + 'menu.visualization': 'Data Visualization', + 'menu.user': 'User Center', + 'menu.arcoWebsite': '外链', + 'menu.faq': 'FAQ', + 'navbar.docs': 'Docs', + 'navbar.action.locale': 'Switch to English', + ...localeSettings, + ...localeMessageBox, + ...localeLogin, + ...localeWorkplace, + /** simple */ + ...localeMonitor, + ...localeSearchTable, + ...localeCardList, + ...localeBasicProfile, + ...localeDataAnalysis, + ...localeMultiDAnalysis, + ...locale403, + ...locale404, + ...locale500, + ...localeUserInfo, + ...localeUserSetting, + /** simple end */ +} diff --git a/src/locale/en-US/settings.ts b/src/locale/en-US/settings.ts new file mode 100644 index 0000000..2125d8f --- /dev/null +++ b/src/locale/en-US/settings.ts @@ -0,0 +1,27 @@ +export default { + 'settings.title': 'Settings', + 'settings.themeColor': 'Theme Color', + 'settings.content': 'Content Setting', + 'settings.search': 'Search', + 'settings.language': 'Language', + 'settings.navbar': 'Navbar', + 'settings.menuWidth': 'Menu Width (px)', + 'settings.navbar.theme.toLight': 'Click to use light mode', + 'settings.navbar.theme.toDark': 'Click to use dark mode', + 'settings.navbar.screen.toFull': 'Click to switch to full screen mode', + 'settings.navbar.screen.toExit': 'Click to exit the full screen mode', + 'settings.navbar.alerts': 'alerts', + 'settings.menu': 'Menu', + 'settings.topMenu': 'Top Menu', + 'settings.tabBar': 'Tab Bar', + 'settings.footer': 'Footer', + 'settings.otherSettings': 'Other Settings', + 'settings.colorWeak': 'Color Weak', + 'settings.alertContent': + 'After the configuration is only temporarily effective, if you want to really affect the project, click the "Copy Settings" button below and replace the configuration in settings.json.', + 'settings.copySettings': 'Copy Settings', + 'settings.copySettings.message': 'Copy succeeded, please paste to file src/settings.json.', + 'settings.close': 'Close', + 'settings.color.tooltip': '10 gradient colors generated according to the theme color', + 'settings.menuFromServer': 'Menu From Server', +} diff --git a/src/locale/index.ts b/src/locale/index.ts new file mode 100644 index 0000000..2493a1a --- /dev/null +++ b/src/locale/index.ts @@ -0,0 +1,22 @@ +import { createI18n } from 'vue-i18n' +import en from './en-US' +import cn from './zh-CN' + +export const LOCALE_OPTIONS = [ + { label: '中文', value: 'zh-CN' }, + { label: 'English', value: 'en-US' }, +] +const defaultLocale = localStorage.getItem('arco-locale') || 'zh-CN' + +const i18n = createI18n({ + locale: defaultLocale, + fallbackLocale: 'en-US', + legacy: false, + allowComposition: true, + messages: { + 'en-US': en, + 'zh-CN': cn, + }, +}) + +export default i18n diff --git a/src/locale/zh-CN.ts b/src/locale/zh-CN.ts new file mode 100644 index 0000000..402a62c --- /dev/null +++ b/src/locale/zh-CN.ts @@ -0,0 +1,57 @@ +import localeMessageBox from '@/components/message-box/locale/zh-CN' +import localeLogin from '@/views/login/locale/zh-CN' + +import localeWorkplace from '@/views/dashboard/workplace/locale/zh-CN' +/** simple */ +import localeMonitor from '@/views/dashboard/monitor/locale/zh-CN' + +import localeCardList from '@/views/list/card/locale/zh-CN' +import localeSearchTable from '@/views/list/search-table/locale/zh-CN' + +import localeBasicProfile from '@/views/profile/basic/locale/zh-CN' + +import localeDataAnalysis from '@/views/visualization/data-analysis/locale/zh-CN' +import localeMultiDAnalysis from '@/views/visualization/multi-dimension-data-analysis/locale/zh-CN' + +import locale403 from '@/views/exception/403/locale/zh-CN' +import locale404 from '@/views/exception/404/locale/zh-CN' +import locale500 from '@/views/exception/500/locale/zh-CN' + +import localeUserInfo from '@/views/user/info/locale/zh-CN' +import localeUserSetting from '@/views/user/setting/locale/zh-CN' +/** simple end */ +import localeSettings from './zh-CN/settings' + +export default { + 'menu.dashboard': '仪表盘', + 'menu.server.dashboard': '仪表盘-服务端', + 'menu.server.workplace': '工作台-服务端', + 'menu.server.monitor': '实时监控-服务端', + 'menu.list': '列表页', + 'menu.result': '结果页', + 'menu.exception': '异常页', + 'menu.profile': '详情页', + 'menu.visualization': '数据可视化', + 'menu.user': '个人中心', + 'menu.arcoWebsite': '外链', + 'menu.faq': '常见问题', + 'navbar.docs': '文档中心', + 'navbar.action.locale': '切换为中文', + ...localeSettings, + ...localeMessageBox, + ...localeLogin, + ...localeWorkplace, + /** simple */ + ...localeMonitor, + ...localeSearchTable, + ...localeCardList, + ...localeBasicProfile, + ...localeDataAnalysis, + ...localeMultiDAnalysis, + ...locale403, + ...locale404, + ...locale500, + ...localeUserInfo, + ...localeUserSetting, + /** simple end */ +} diff --git a/src/locale/zh-CN/settings.ts b/src/locale/zh-CN/settings.ts new file mode 100644 index 0000000..eb1f2f4 --- /dev/null +++ b/src/locale/zh-CN/settings.ts @@ -0,0 +1,26 @@ +export default { + 'settings.title': '页面配置', + 'settings.themeColor': '主题色', + 'settings.content': '内容区域', + 'settings.search': '搜索', + 'settings.language': '语言', + 'settings.navbar': '导航栏', + 'settings.menuWidth': '菜单宽度 (px)', + 'settings.navbar.theme.toLight': '点击切换为亮色模式', + 'settings.navbar.theme.toDark': '点击切换为暗黑模式', + 'settings.navbar.screen.toFull': '点击切换全屏模式', + 'settings.navbar.screen.toExit': '点击退出全屏模式', + 'settings.navbar.alerts': '消息通知', + 'settings.menu': '菜单栏', + 'settings.topMenu': '顶部菜单栏', + 'settings.tabBar': '多页签', + 'settings.footer': '底部', + 'settings.otherSettings': '其他设置', + 'settings.colorWeak': '色弱模式', + 'settings.alertContent': '配置之后仅是临时生效,要想真正作用于项目,点击下方的 "复制配置" 按钮,将配置替换到 settings.json 中即可。', + 'settings.copySettings': '复制配置', + 'settings.copySettings.message': '复制成功,请粘贴到 src/settings.json 文件中', + 'settings.close': '关闭', + 'settings.color.tooltip': '根据主题颜色生成的 10 个梯度色(将配置复制到项目中,主题色才能对亮色 / 暗黑模式同时生效)', + 'settings.menuFromServer': '菜单来源于后台', +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..ee16179 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,28 @@ +import globalComponents from '@/components' +import ArcoVue from '@arco-design/web-vue' +import ArcoVueIcon from '@arco-design/web-vue/es/icon' +import { createApp } from 'vue' +import App from './App.vue' +import directive from './directive' +import i18n from './locale' +import './mock' +import router from './router' +import store from './store' +// Styles are imported via arco-plugin. See config/plugin/arcoStyleImport.ts in the directory for details +// 样式通过 arco-plugin 插件导入。详见目录文件 config/plugin/arcoStyleImport.ts +// https://arco.design/docs/designlab/use-theme-package +import '@/api/interceptor' +import '@/assets/style/global.less' + +const app = createApp(App) + +app.use(ArcoVue, {}) +app.use(ArcoVueIcon) + +app.use(router) +app.use(store) +app.use(i18n) +app.use(globalComponents) +app.use(directive) + +app.mount('#app') diff --git a/src/mock/index.ts b/src/mock/index.ts new file mode 100644 index 0000000..d0789aa --- /dev/null +++ b/src/mock/index.ts @@ -0,0 +1,24 @@ +import Mock from 'mockjs' + +import './user' +import './message-box' + +import '@/views/dashboard/workplace/mock' +/** simple */ +import '@/views/dashboard/monitor/mock' + +import '@/views/list/card/mock' +import '@/views/list/search-table/mock' + +import '@/views/profile/basic/mock' + +import '@/views/visualization/data-analysis/mock' +import '@/views/visualization/multi-dimension-data-analysis/mock' + +import '@/views/user/info/mock' +import '@/views/user/setting/mock' +/** simple end */ + +Mock.setup({ + timeout: '600-1000', +}) diff --git a/src/mock/message-box.ts b/src/mock/message-box.ts new file mode 100644 index 0000000..ca20cbf --- /dev/null +++ b/src/mock/message-box.ts @@ -0,0 +1,82 @@ +import Mock from 'mockjs' +import setupMock, { successResponseWrap } from '@/utils/setup-mock' + +const haveReadIds: number[] = [] +const getMessageList = () => { + return [ + { + id: 1, + type: 'message', + title: '郑曦月', + subTitle: '的私信', + avatar: '//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/8361eeb82904210b4f55fab888fe8416.png~tplv-uwbnlip3yd-webp.webp', + content: '审批请求已发送,请查收', + time: '今天 12:30:01', + }, + { + id: 2, + type: 'message', + title: '宁波', + subTitle: '的回复', + avatar: '//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp', + content: '此处 bug 已经修复', + time: '今天 12:30:01', + }, + { + id: 3, + type: 'message', + title: '宁波', + subTitle: '的回复', + avatar: '//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp', + content: '此处 bug 已经修复', + time: '今天 12:20:01', + }, + { + id: 4, + type: 'notice', + title: '续费通知', + subTitle: '', + avatar: '', + content: '您的产品使用期限即将截止,如需继续使用产品请前往购…', + time: '今天 12:20:01', + messageType: 3, + }, + { + id: 5, + type: 'notice', + title: '规则开通成功', + subTitle: '', + avatar: '', + content: '内容屏蔽规则于 2021-12-01 开通成功并生效', + time: '今天 12:20:01', + messageType: 1, + }, + { + id: 6, + type: 'todo', + title: '质检队列变更', + subTitle: '', + avatar: '', + content: '内容质检队列于 2021-12-01 19:50:23 进行变更,请重新…', + time: '今天 12:20:01', + messageType: 0, + }, + ].map((item) => ({ + ...item, + status: haveReadIds.indexOf(item.id) === -1 ? 0 : 1, + })) +} + +setupMock({ + setup: () => { + Mock.mock(new RegExp('/api/message/list'), () => { + return successResponseWrap(getMessageList()) + }) + + Mock.mock(new RegExp('/api/message/read'), (params: { body: string }) => { + const { ids } = JSON.parse(params.body) + haveReadIds.push(...(ids || [])) + return successResponseWrap(true) + }) + }, +}) diff --git a/src/mock/user.ts b/src/mock/user.ts new file mode 100644 index 0000000..b4a63cd --- /dev/null +++ b/src/mock/user.ts @@ -0,0 +1,101 @@ +import setupMock, { failResponseWrap, successResponseWrap } from '@/utils/setup-mock' +import Mock from 'mockjs' + +import { MockParams } from '@/types/mock' +import { isLogin } from '@/utils/auth' + +setupMock({ + setup() { + // Mock.XHR.prototype.withCredentials = true; + + // 用户信息 + Mock.mock(new RegExp('/api/user/info'), () => { + if (isLogin()) { + const role = window.localStorage.getItem('userRole') || 'admin' + return successResponseWrap({ + name: '王立群', + avatar: 'https://i.gtimg.cn/club/item/face/img/2/15922_100.gif', + email: 'xxx.com', + job: 'frontend', + jobName: 'xxx', + organization: 'Frontend', + organizationName: 'xx', + location: 'beijing', + locationName: '北京', + introduction: '人潇洒,性温存', + personalWebsite: 'wwww.baidu.com', + phone: '150****0000', + registrationDate: '2013-05-10 12:10:00', + accountId: 'xxxxx', + certification: 1, + role, + }) + } + return failResponseWrap(null, '未登录', 50008) + }) + + // 登录 + Mock.mock(new RegExp('/api/user/login'), (params: MockParams) => { + const { username, password } = JSON.parse(params.body) + if (!username) { + return failResponseWrap(null, '用户名不能为空', 50000) + } + if (!password) { + return failResponseWrap(null, '密码不能为空', 50000) + } + if (username === 'admin' && password === 'admin') { + window.localStorage.setItem('userRole', 'admin') + return successResponseWrap({ + token: '12345', + }) + } + if (username === 'user' && password === 'user') { + window.localStorage.setItem('userRole', 'user') + return successResponseWrap({ + token: '54321', + }) + } + return failResponseWrap(null, '账号或者密码错误', 50000) + }) + + // 登出 + Mock.mock(new RegExp('/api/user/logout'), () => { + return successResponseWrap(null) + }) + + // 用户的服务端菜单 + Mock.mock(new RegExp('/api/user/menu'), () => { + const menuList = [ + { + path: '/dashboard', + name: 'dashboard', + meta: { + locale: 'menu.server.dashboard', + requiresAuth: true, + icon: 'icon-dashboard', + order: 1, + }, + children: [ + { + path: 'workplace', + name: 'Workplace', + meta: { + locale: 'menu.server.workplace', + requiresAuth: true, + }, + }, + { + path: 'https://arco.design', + name: 'arcoWebsite', + meta: { + locale: 'menu.arcoWebsite', + requiresAuth: true, + }, + }, + ], + }, + ] + return successResponseWrap(menuList) + }) + }, +}) diff --git a/src/router/app-menus/index.ts b/src/router/app-menus/index.ts new file mode 100644 index 0000000..4a5c1f6 --- /dev/null +++ b/src/router/app-menus/index.ts @@ -0,0 +1,16 @@ +import { appExternalRoutes, appRoutes } from '../routes' + +const mixinRoutes = [...appRoutes, ...appExternalRoutes] + +const appClientMenus = mixinRoutes.map((el) => { + const { name, path, meta, redirect, children } = el + return { + name, + path, + meta, + redirect, + children, + } +}) + +export default appClientMenus diff --git a/src/router/constants.ts b/src/router/constants.ts new file mode 100644 index 0000000..ee8bf00 --- /dev/null +++ b/src/router/constants.ts @@ -0,0 +1,18 @@ +export const WHITE_LIST = [ + { name: 'notFound', children: [] }, + { name: 'login', children: [] }, +] + +export const NOT_FOUND = { + name: 'notFound', +} + +export const REDIRECT_ROUTE_NAME = 'Redirect' + +export const DEFAULT_ROUTE_NAME = 'Workplace' + +export const DEFAULT_ROUTE = { + title: 'menu.dashboard.workplace', + name: DEFAULT_ROUTE_NAME, + fullPath: '/dashboard/workplace', +} diff --git a/src/router/guard/index.ts b/src/router/guard/index.ts new file mode 100644 index 0000000..e91ffb6 --- /dev/null +++ b/src/router/guard/index.ts @@ -0,0 +1,17 @@ +import { setRouteEmitter } from '@/utils/route-listener' +import type { Router } from 'vue-router' +import setupPermissionGuard from './permission' +import setupUserLoginInfoGuard from './userLoginInfo' + +function setupPageGuard(router: Router) { + router.beforeEach(async (to) => { + // emit route change + setRouteEmitter(to) + }) +} + +export default function createRouteGuard(router: Router) { + setupPageGuard(router) + setupUserLoginInfoGuard(router) + setupPermissionGuard(router) +} diff --git a/src/router/guard/permission.ts b/src/router/guard/permission.ts new file mode 100644 index 0000000..a2c4b1c --- /dev/null +++ b/src/router/guard/permission.ts @@ -0,0 +1,48 @@ +import NProgress from 'nprogress' // progress bar +import type { Router, RouteRecordNormalized } from 'vue-router' + +import usePermission from '@/hooks/permission' +import { useAppStore, useUserStore } from '@/store' +import { NOT_FOUND, WHITE_LIST } from '../constants' +import { appRoutes } from '../routes' + +export default function setupPermissionGuard(router: Router) { + router.beforeEach(async (to, from, next) => { + const appStore = useAppStore() + const userStore = useUserStore() + const Permission = usePermission() + const permissionsAllow = Permission.accessRouter(to) + if (appStore.menuFromServer) { + // 针对来自服务端的菜单配置进行处理 + // Handle routing configuration from the server + + // 根据需要自行完善来源于服务端的菜单配置的permission逻辑 + // Refine the permission logic from the server's menu configuration as needed + if (!appStore.appAsyncMenus.length && !WHITE_LIST.find((el) => el.name === to.name)) { + await appStore.fetchServerMenuConfig() + } + const serverMenuConfig = [...appStore.appAsyncMenus, ...WHITE_LIST] + + let exist = false + while (serverMenuConfig.length && !exist) { + const element = serverMenuConfig.shift() + if (element?.name === to.name) exist = true + + if (element?.children) { + serverMenuConfig.push(...(element.children as unknown as RouteRecordNormalized[])) + } + } + if (exist && permissionsAllow) { + next() + } else next(NOT_FOUND) + } else { + // eslint-disable-next-line no-lonely-if + if (permissionsAllow) next() + else { + const destination = Permission.findFirstPermissionRoute(appRoutes, userStore.role) || NOT_FOUND + next(destination) + } + } + NProgress.done() + }) +} diff --git a/src/router/guard/userLoginInfo.ts b/src/router/guard/userLoginInfo.ts new file mode 100644 index 0000000..a7b4428 --- /dev/null +++ b/src/router/guard/userLoginInfo.ts @@ -0,0 +1,43 @@ +import NProgress from 'nprogress' // progress bar +import type { LocationQueryRaw, Router } from 'vue-router' + +import { useUserStore } from '@/store' +import { isLogin } from '@/utils/auth' + +export default function setupUserLoginInfoGuard(router: Router) { + router.beforeEach(async (to, from, next) => { + NProgress.start() + const userStore = useUserStore() + if (isLogin()) { + if (userStore.role) { + next() + } else { + try { + await userStore.info() + next() + } catch (error) { + await userStore.logout() + next({ + name: 'login', + query: { + redirect: to.name, + ...to.query, + } as LocationQueryRaw, + }) + } + } + } else { + if (to.name === 'login') { + next() + return + } + next({ + name: 'login', + query: { + redirect: to.name, + ...to.query, + } as LocationQueryRaw, + }) + } + }) +} diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..01c5568 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,37 @@ +import NProgress from 'nprogress' // progress bar +import 'nprogress/nprogress.css' +import { createRouter, createWebHashHistory } from 'vue-router' + +import createRouteGuard from './guard' +import { appRoutes } from './routes' +import { NOT_FOUND_ROUTE, REDIRECT_MAIN } from './routes/base' + +NProgress.configure({ showSpinner: false }) // NProgress Configuration + +const router = createRouter({ + history: createWebHashHistory('./'), + routes: [ + { + path: '/', + redirect: 'login', + }, + { + path: '/login', + name: 'login', + component: () => import('@/views/login/index.vue'), + meta: { + requiresAuth: false, + }, + }, + ...appRoutes, + REDIRECT_MAIN, + NOT_FOUND_ROUTE, + ], + scrollBehavior() { + return { top: 0 } + }, +}) + +createRouteGuard(router) + +export default router diff --git a/src/router/routes/base.ts b/src/router/routes/base.ts new file mode 100644 index 0000000..ca0b35c --- /dev/null +++ b/src/router/routes/base.ts @@ -0,0 +1,31 @@ +import { REDIRECT_ROUTE_NAME } from '@/router/constants' +import type { RouteRecordRaw } from 'vue-router' + +export const DEFAULT_LAYOUT = () => import('@/layout/default-layout.vue') + +export const REDIRECT_MAIN: RouteRecordRaw = { + path: '/redirect', + name: 'redirectWrapper', + component: DEFAULT_LAYOUT, + meta: { + requiresAuth: true, + hideInMenu: true, + }, + children: [ + { + path: '/redirect/:path', + name: REDIRECT_ROUTE_NAME, + component: () => import('@/views/redirect/index.vue'), + meta: { + requiresAuth: true, + hideInMenu: true, + }, + }, + ], +} + +export const NOT_FOUND_ROUTE: RouteRecordRaw = { + path: '/:pathMatch(.*)*', + name: 'notFound', + component: () => import('@/views/not-found/index.vue'), +} diff --git a/src/router/routes/externalModules/arco.ts b/src/router/routes/externalModules/arco.ts new file mode 100644 index 0000000..e697f04 --- /dev/null +++ b/src/router/routes/externalModules/arco.ts @@ -0,0 +1,10 @@ +export default { + path: 'https://arco.design', + name: 'arcoWebsite', + meta: { + locale: 'menu.arcoWebsite', + icon: 'icon-link', + requiresAuth: true, + order: 8, + }, +} diff --git a/src/router/routes/externalModules/faq.ts b/src/router/routes/externalModules/faq.ts new file mode 100644 index 0000000..9037266 --- /dev/null +++ b/src/router/routes/externalModules/faq.ts @@ -0,0 +1,10 @@ +export default { + path: 'www.baidu.com', + name: 'faq', + meta: { + locale: 'menu.faq', + icon: 'icon-question-circle', + requiresAuth: true, + order: 9, + }, +} diff --git a/src/router/routes/index.ts b/src/router/routes/index.ts new file mode 100644 index 0000000..7172895 --- /dev/null +++ b/src/router/routes/index.ts @@ -0,0 +1,20 @@ +import type { RouteRecordNormalized } from 'vue-router' + +const modules = import.meta.glob('./modules/*.ts', { eager: true }) +const externalModules = import.meta.glob('./externalModules/*.ts', { + eager: true, +}) + +function formatModules(_modules: any, result: RouteRecordNormalized[]) { + Object.keys(_modules).forEach((key) => { + const defaultModule = _modules[key].default + if (!defaultModule) return + const moduleList = Array.isArray(defaultModule) ? [...defaultModule] : [defaultModule] + result.push(...moduleList) + }) + return result +} + +export const appRoutes: RouteRecordNormalized[] = formatModules(modules, []) + +export const appExternalRoutes: RouteRecordNormalized[] = formatModules(externalModules, []) diff --git a/src/router/routes/modules/dashboard.ts b/src/router/routes/modules/dashboard.ts new file mode 100644 index 0000000..ea32bbb --- /dev/null +++ b/src/router/routes/modules/dashboard.ts @@ -0,0 +1,40 @@ +import { DEFAULT_LAYOUT } from '../base' +import { AppRouteRecordRaw } from '../types' + +const DASHBOARD: AppRouteRecordRaw = { + path: '/dashboard', + name: 'dashboard', + component: DEFAULT_LAYOUT, + meta: { + locale: 'menu.dashboard', + requiresAuth: true, + icon: 'icon-dashboard', + order: 0, + }, + children: [ + { + path: 'workplace', + name: 'Workplace', + component: () => import('@/views/dashboard/workplace/index.vue'), + meta: { + locale: 'menu.dashboard.workplace', + requiresAuth: true, + roles: ['*'], + }, + }, + /** simple */ + { + path: 'monitor', + name: 'Monitor', + component: () => import('@/views/dashboard/monitor/index.vue'), + meta: { + locale: 'menu.dashboard.monitor', + requiresAuth: true, + roles: ['admin'], + }, + }, + /** simple end */ + ], +} + +export default DASHBOARD diff --git a/src/router/routes/modules/exception.ts b/src/router/routes/modules/exception.ts new file mode 100644 index 0000000..988a704 --- /dev/null +++ b/src/router/routes/modules/exception.ts @@ -0,0 +1,48 @@ +import { DEFAULT_LAYOUT } from '../base' +import { AppRouteRecordRaw } from '../types' + +const EXCEPTION: AppRouteRecordRaw = { + path: '/exception', + name: 'exception', + component: DEFAULT_LAYOUT, + meta: { + locale: 'menu.exception', + requiresAuth: true, + icon: 'icon-exclamation-circle', + order: 6, + }, + children: [ + { + path: '403', + name: '403', + component: () => import('@/views/exception/403/index.vue'), + meta: { + locale: 'menu.exception.403', + requiresAuth: true, + roles: ['admin'], + }, + }, + { + path: '404', + name: '404', + component: () => import('@/views/exception/404/index.vue'), + meta: { + locale: 'menu.exception.404', + requiresAuth: true, + roles: ['*'], + }, + }, + { + path: '500', + name: '500', + component: () => import('@/views/exception/500/index.vue'), + meta: { + locale: 'menu.exception.500', + requiresAuth: true, + roles: ['*'], + }, + }, + ], +} + +export default EXCEPTION diff --git a/src/router/routes/modules/list.ts b/src/router/routes/modules/list.ts new file mode 100644 index 0000000..65c546d --- /dev/null +++ b/src/router/routes/modules/list.ts @@ -0,0 +1,38 @@ +import { DEFAULT_LAYOUT } from '../base' +import { AppRouteRecordRaw } from '../types' + +const LIST: AppRouteRecordRaw = { + path: '/list', + name: 'list', + component: DEFAULT_LAYOUT, + meta: { + locale: 'menu.list', + requiresAuth: true, + icon: 'icon-list', + order: 2, + }, + children: [ + { + path: 'search-table', // The midline path complies with SEO specifications + name: 'SearchTable', + component: () => import('@/views/list/search-table/index.vue'), + meta: { + locale: 'menu.list.searchTable', + requiresAuth: true, + roles: ['*'], + }, + }, + { + path: 'card', + name: 'Card', + component: () => import('@/views/list/card/index.vue'), + meta: { + locale: 'menu.list.cardList', + requiresAuth: true, + roles: ['*'], + }, + }, + ], +} + +export default LIST diff --git a/src/router/routes/modules/profile.ts b/src/router/routes/modules/profile.ts new file mode 100644 index 0000000..4e9a78d --- /dev/null +++ b/src/router/routes/modules/profile.ts @@ -0,0 +1,28 @@ +import { DEFAULT_LAYOUT } from '../base' +import { AppRouteRecordRaw } from '../types' + +const PROFILE: AppRouteRecordRaw = { + path: '/profile', + name: 'profile', + component: DEFAULT_LAYOUT, + meta: { + locale: 'menu.profile', + requiresAuth: true, + icon: 'icon-file', + order: 4, + }, + children: [ + { + path: 'basic', + name: 'Basic', + component: () => import('@/views/profile/basic/index.vue'), + meta: { + locale: 'menu.profile.basic', + requiresAuth: true, + roles: ['admin'], + }, + }, + ], +} + +export default PROFILE diff --git a/src/router/routes/modules/user.ts b/src/router/routes/modules/user.ts new file mode 100644 index 0000000..cbb0a06 --- /dev/null +++ b/src/router/routes/modules/user.ts @@ -0,0 +1,38 @@ +import { DEFAULT_LAYOUT } from '../base' +import { AppRouteRecordRaw } from '../types' + +const USER: AppRouteRecordRaw = { + path: '/user', + name: 'user', + component: DEFAULT_LAYOUT, + meta: { + locale: 'menu.user', + icon: 'icon-user', + requiresAuth: true, + order: 7, + }, + children: [ + { + path: 'info', + name: 'Info', + component: () => import('@/views/user/info/index.vue'), + meta: { + locale: 'menu.user.info', + requiresAuth: true, + roles: ['*'], + }, + }, + { + path: 'setting', + name: 'Setting', + component: () => import('@/views/user/setting/index.vue'), + meta: { + locale: 'menu.user.setting', + requiresAuth: true, + roles: ['*'], + }, + }, + ], +} + +export default USER diff --git a/src/router/routes/modules/visualization.ts b/src/router/routes/modules/visualization.ts new file mode 100644 index 0000000..8ec4756 --- /dev/null +++ b/src/router/routes/modules/visualization.ts @@ -0,0 +1,38 @@ +import { DEFAULT_LAYOUT } from '../base' +import { AppRouteRecordRaw } from '../types' + +const VISUALIZATION: AppRouteRecordRaw = { + path: '/visualization', + name: 'visualization', + component: DEFAULT_LAYOUT, + meta: { + locale: 'menu.visualization', + requiresAuth: true, + icon: 'icon-apps', + order: 1, + }, + children: [ + { + path: 'data-analysis', + name: 'DataAnalysis', + component: () => import('@/views/visualization/data-analysis/index.vue'), + meta: { + locale: 'menu.visualization.dataAnalysis', + requiresAuth: true, + roles: ['admin'], + }, + }, + { + path: 'multi-dimension-data-analysis', + name: 'MultiDimensionDataAnalysis', + component: () => import('@/views/visualization/multi-dimension-data-analysis/index.vue'), + meta: { + locale: 'menu.visualization.multiDimensionDataAnalysis', + requiresAuth: true, + roles: ['admin'], + }, + }, + ], +} + +export default VISUALIZATION diff --git a/src/router/routes/types.ts b/src/router/routes/types.ts new file mode 100644 index 0000000..b9bffd1 --- /dev/null +++ b/src/router/routes/types.ts @@ -0,0 +1,17 @@ +import { defineComponent } from 'vue' +import type { NavigationGuard, RouteMeta } from 'vue-router' + +export type Component = ReturnType | (() => Promise) | (() => Promise) + +export interface AppRouteRecordRaw { + path: string + name?: string | symbol + meta?: RouteMeta + redirect?: string + component: Component | string + children?: AppRouteRecordRaw[] + alias?: string | string[] + props?: Record + beforeEnter?: NavigationGuard | NavigationGuard[] + fullPath?: string +} diff --git a/src/router/typings.d.ts b/src/router/typings.d.ts new file mode 100644 index 0000000..702b0cc --- /dev/null +++ b/src/router/typings.d.ts @@ -0,0 +1,16 @@ +import 'vue-router' + +declare module 'vue-router' { + interface RouteMeta { + roles?: string[] // Controls roles that have access to the page + requiresAuth: boolean // Whether login is required to access the current page (every route must declare) + icon?: string // The icon show in the side menu + locale?: string // The locale name show in side menu and breadcrumb + hideInMenu?: boolean // If true, it is not displayed in the side menu + hideChildrenInMenu?: boolean // if set true, the children are not displayed in the side menu + activeMenu?: string // if set name, the menu will be highlighted according to the name you set + order?: number // Sort routing menu items. If set key, the higher the value, the more forward it is + noAffix?: boolean // if set true, the tag will not affix in the tab-bar + ignoreCache?: boolean // if set true, the page will not be cached + } +} diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..7b39775 --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,9 @@ +import { createPinia } from 'pinia' +import useAppStore from './modules/app' +import useTabBarStore from './modules/tab-bar' +import useUserStore from './modules/user' + +const pinia = createPinia() + +export { useAppStore, useTabBarStore, useUserStore } +export default pinia diff --git a/src/store/modules/app/index.ts b/src/store/modules/app/index.ts new file mode 100644 index 0000000..c3a3685 --- /dev/null +++ b/src/store/modules/app/index.ts @@ -0,0 +1,77 @@ +import { defineStore } from 'pinia' +import { Notification } from '@arco-design/web-vue' +import type { NotificationReturn } from '@arco-design/web-vue/es/notification/interface' +import type { RouteRecordNormalized } from 'vue-router' +import defaultSettings from '@/config/settings.json' +import { getMenuList } from '@/api/user' +import { AppState } from './types' + +const useAppStore = defineStore('app', { + state: (): AppState => ({ ...defaultSettings }), + + getters: { + appCurrentSetting(state: AppState): AppState { + return { ...state } + }, + appDevice(state: AppState) { + return state.device + }, + appAsyncMenus(state: AppState): RouteRecordNormalized[] { + return state.serverMenu as unknown as RouteRecordNormalized[] + }, + }, + + actions: { + // Update app settings + updateSettings(partial: Partial) { + // @ts-ignore-next-line + this.$patch(partial) + }, + + // Change theme color + toggleTheme(dark: boolean) { + if (dark) { + this.theme = 'dark' + document.body.setAttribute('arco-theme', 'dark') + } else { + this.theme = 'light' + document.body.removeAttribute('arco-theme') + } + }, + toggleDevice(device: string) { + this.device = device + }, + toggleMenu(value: boolean) { + this.hideMenu = value + }, + async fetchServerMenuConfig() { + let notifyInstance: NotificationReturn | null = null + try { + notifyInstance = Notification.info({ + id: 'menuNotice', // Keep the instance id the same + content: 'loading', + closable: true, + }) + const { data } = await getMenuList() + this.serverMenu = data + notifyInstance = Notification.success({ + id: 'menuNotice', + content: 'success', + closable: true, + }) + } catch (error) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + notifyInstance = Notification.error({ + id: 'menuNotice', + content: 'error', + closable: true, + }) + } + }, + clearServerMenu() { + this.serverMenu = [] + }, + }, +}) + +export default useAppStore diff --git a/src/store/modules/app/types.ts b/src/store/modules/app/types.ts new file mode 100644 index 0000000..c971b7f --- /dev/null +++ b/src/store/modules/app/types.ts @@ -0,0 +1,20 @@ +import type { RouteRecordNormalized } from 'vue-router' + +export interface AppState { + theme: string + colorWeak: boolean + navbar: boolean + menu: boolean + topMenu: boolean + hideMenu: boolean + menuCollapse: boolean + footer: boolean + themeColor: string + menuWidth: number + globalSettings: boolean + device: string + tabBar: boolean + menuFromServer: boolean + serverMenu: RouteRecordNormalized[] + [key: string]: unknown +} diff --git a/src/store/modules/tab-bar/index.ts b/src/store/modules/tab-bar/index.ts new file mode 100644 index 0000000..c826167 --- /dev/null +++ b/src/store/modules/tab-bar/index.ts @@ -0,0 +1,70 @@ +import type { RouteLocationNormalized } from 'vue-router' +import { defineStore } from 'pinia' +import { DEFAULT_ROUTE, DEFAULT_ROUTE_NAME, REDIRECT_ROUTE_NAME } from '@/router/constants' +import { isString } from '@/utils/is' +import { TabBarState, TagProps } from './types' + +const formatTag = (route: RouteLocationNormalized): TagProps => { + const { name, meta, fullPath, query } = route + return { + title: meta.locale || '', + name: String(name), + fullPath, + query, + ignoreCache: meta.ignoreCache, + } +} + +const BAN_LIST = [REDIRECT_ROUTE_NAME] + +const useAppStore = defineStore('tabBar', { + state: (): TabBarState => ({ + cacheTabList: new Set([DEFAULT_ROUTE_NAME]), + tagList: [DEFAULT_ROUTE], + }), + + getters: { + getTabList(): TagProps[] { + return this.tagList + }, + getCacheList(): string[] { + return Array.from(this.cacheTabList) + }, + }, + + actions: { + updateTabList(route: RouteLocationNormalized) { + if (BAN_LIST.includes(route.name as string)) return + this.tagList.push(formatTag(route)) + if (!route.meta.ignoreCache) { + this.cacheTabList.add(route.name as string) + } + }, + deleteTag(idx: number, tag: TagProps) { + this.tagList.splice(idx, 1) + this.cacheTabList.delete(tag.name) + }, + addCache(name: string) { + if (isString(name) && name !== '') this.cacheTabList.add(name) + }, + deleteCache(tag: TagProps) { + this.cacheTabList.delete(tag.name) + }, + freshTabList(tags: TagProps[]) { + this.tagList = tags + this.cacheTabList.clear() + // 要先判断ignoreCache + this.tagList + .filter((el) => !el.ignoreCache) + .map((el) => el.name) + .forEach((x) => this.cacheTabList.add(x)) + }, + resetTabList() { + this.tagList = [DEFAULT_ROUTE] + this.cacheTabList.clear() + this.cacheTabList.add(DEFAULT_ROUTE_NAME) + }, + }, +}) + +export default useAppStore diff --git a/src/store/modules/tab-bar/types.ts b/src/store/modules/tab-bar/types.ts new file mode 100644 index 0000000..7feff16 --- /dev/null +++ b/src/store/modules/tab-bar/types.ts @@ -0,0 +1,12 @@ +export interface TagProps { + title: string + name: string + fullPath: string + query?: any + ignoreCache?: boolean +} + +export interface TabBarState { + tagList: TagProps[] + cacheTabList: Set +} diff --git a/src/store/modules/user/index.ts b/src/store/modules/user/index.ts new file mode 100644 index 0000000..bbf25ae --- /dev/null +++ b/src/store/modules/user/index.ts @@ -0,0 +1,86 @@ +import { LoginData, getUserInfo, login as userLogin, logout as userLogout } from '@/api/user' +import { clearToken, setToken } from '@/utils/auth' +import { removeRouteListener } from '@/utils/route-listener' +import { defineStore } from 'pinia' +import useAppStore from '../app' +import { UserState } from './types' + +const useUserStore = defineStore('user', { + state: (): UserState => ({ + name: undefined, + avatar: undefined, + job: undefined, + organization: undefined, + location: undefined, + email: undefined, + introduction: undefined, + personalWebsite: undefined, + jobName: undefined, + organizationName: undefined, + locationName: undefined, + phone: undefined, + registrationDate: undefined, + accountId: undefined, + certification: undefined, + role: '', + }), + + getters: { + userInfo(state: UserState): UserState { + return { ...state } + }, + }, + + actions: { + switchRoles() { + return new Promise((resolve) => { + this.role = this.role === 'user' ? 'admin' : 'user' + resolve(this.role) + }) + }, + // Set user's information + setInfo(partial: Partial) { + this.$patch(partial) + }, + + // Reset user's information + resetInfo() { + this.$reset() + }, + + // Get user's information + async info() { + const res = await getUserInfo() + + this.setInfo(res.data) + }, + + // Login + async login(loginForm: LoginData) { + try { + const res = await userLogin(loginForm) + setToken(res.data.token) + } catch (err) { + clearToken() + throw err + } + }, + logoutCallBack() { + const appStore = useAppStore() + this.resetInfo() + clearToken() + removeRouteListener() + appStore.clearServerMenu() + }, + // Logout + async logout() { + try { + await userLogout() + } finally { + this.logoutCallBack() + } + }, + }, +}) + +export default useUserStore diff --git a/src/store/modules/user/types.ts b/src/store/modules/user/types.ts new file mode 100644 index 0000000..97cee61 --- /dev/null +++ b/src/store/modules/user/types.ts @@ -0,0 +1,19 @@ +export type RoleType = '' | '*' | 'admin' | 'user' +export interface UserState { + name?: string + avatar?: string + job?: string + organization?: string + location?: string + email?: string + introduction?: string + personalWebsite?: string + jobName?: string + organizationName?: string + locationName?: string + phone?: string + registrationDate?: string + accountId?: string + certification?: number + role: RoleType +} diff --git a/src/types/echarts.ts b/src/types/echarts.ts new file mode 100644 index 0000000..3a788ff --- /dev/null +++ b/src/types/echarts.ts @@ -0,0 +1,10 @@ +import { CallbackDataParams } from 'echarts/types/dist/shared' + +export interface ToolTipFormatterParams extends CallbackDataParams { + axisDim: string + axisIndex: number + axisType: string + axisId: string + axisValue: string + axisValueLabel: string +} diff --git a/src/types/env.d.ts b/src/types/env.d.ts new file mode 100644 index 0000000..cdf404d --- /dev/null +++ b/src/types/env.d.ts @@ -0,0 +1,11 @@ +/// + +interface ImportMetaEnv { + readonly VITE_API_BASE_URL?: string + // 在这里可以继续补充其他 VITE_ 前缀的环境变量 +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} + diff --git a/src/types/global.ts b/src/types/global.ts new file mode 100644 index 0000000..40b5475 --- /dev/null +++ b/src/types/global.ts @@ -0,0 +1,37 @@ +export interface AnyObject { + [key: string]: unknown +} + +export interface Options { + value: unknown + label: string +} + +export interface NodeOptions extends Options { + children?: NodeOptions[] +} + +export interface GetParams { + body: null + type: string + url: string +} + +export interface PostData { + body: string + type: string + url: string +} + +export interface Pagination { + current: number + pageSize: number + total?: number +} + +export type TimeRanger = [string, string] + +export interface GeneralChart { + xAxis: string[] + data: Array<{ name: string; value: number[] }> +} diff --git a/src/types/mock.ts b/src/types/mock.ts new file mode 100644 index 0000000..fbd0a04 --- /dev/null +++ b/src/types/mock.ts @@ -0,0 +1,5 @@ +export interface MockParams { + url: string + type: string + body: string +} diff --git a/src/types/shims.d.ts b/src/types/shims.d.ts new file mode 100644 index 0000000..226106d --- /dev/null +++ b/src/types/shims.d.ts @@ -0,0 +1,9 @@ +declare module '@arco-design/web-vue/es/form' { + export * from '@arco-design/web-vue' +} + +declare module '*.png' { + const src: string + export default src +} + diff --git a/src/types/vue-i18n.d.ts b/src/types/vue-i18n.d.ts new file mode 100644 index 0000000..4dd8bce --- /dev/null +++ b/src/types/vue-i18n.d.ts @@ -0,0 +1,9 @@ +import type { Composer } from 'vue-i18n' + +declare module '@vue/runtime-core' { + interface ComponentCustomProperties { + $t: any + } +} + +export {} \ No newline at end of file diff --git a/src/utils/auth.ts b/src/utils/auth.ts new file mode 100644 index 0000000..2b6aee0 --- /dev/null +++ b/src/utils/auth.ts @@ -0,0 +1,19 @@ +const TOKEN_KEY = 'token' + +const isLogin = () => { + return !!localStorage.getItem(TOKEN_KEY) +} + +const getToken = () => { + return localStorage.getItem(TOKEN_KEY) +} + +const setToken = (token: string) => { + localStorage.setItem(TOKEN_KEY, token) +} + +const clearToken = () => { + localStorage.removeItem(TOKEN_KEY) +} + +export { clearToken, getToken, isLogin, setToken } diff --git a/src/utils/env.ts b/src/utils/env.ts new file mode 100644 index 0000000..4bc1479 --- /dev/null +++ b/src/utils/env.ts @@ -0,0 +1,4 @@ +// const debug = import.meta.env.MODE !== 'production' +const debug = true + +export default debug diff --git a/src/utils/event.ts b/src/utils/event.ts new file mode 100644 index 0000000..1aca59f --- /dev/null +++ b/src/utils/event.ts @@ -0,0 +1,16 @@ +export function addEventListen(target: Window | HTMLElement, event: string, handler: EventListenerOrEventListenerObject, capture = false) { + if (target.addEventListener && typeof target.addEventListener === 'function') { + target.addEventListener(event, handler, capture) + } +} + +export function removeEventListen( + target: Window | HTMLElement, + event: string, + handler: EventListenerOrEventListenerObject, + capture = false +) { + if (target.removeEventListener && typeof target.removeEventListener === 'function') { + target.removeEventListener(event, handler, capture) + } +} diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..913f6e4 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,22 @@ +type TargetContext = '_self' | '_parent' | '_blank' | '_top' + +export const openWindow = (url: string, opts?: { target?: TargetContext; [key: string]: any }) => { + const { target = '_blank', ...others } = opts || {} + window.open( + url, + target, + Object.entries(others) + .reduce((preValue: string[], curValue) => { + const [key, value] = curValue + return [...preValue, `${key}=${value}`] + }, []) + .join(',') + ) +} + +export const regexUrl = new RegExp( + '^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$', + 'i' +) + +export default null diff --git a/src/utils/is.ts b/src/utils/is.ts new file mode 100644 index 0000000..7e29b64 --- /dev/null +++ b/src/utils/is.ts @@ -0,0 +1,53 @@ +const opt = Object.prototype.toString + +export function isArray(obj: any): obj is any[] { + return opt.call(obj) === '[object Array]' +} + +export function isObject(obj: any): obj is { [key: string]: any } { + return opt.call(obj) === '[object Object]' +} + +export function isString(obj: any): obj is string { + return opt.call(obj) === '[object String]' +} + +export function isNumber(obj: any): obj is number { + return opt.call(obj) === '[object Number]' && obj === obj // eslint-disable-line +} + +export function isRegExp(obj: any) { + return opt.call(obj) === '[object RegExp]' +} + +export function isFile(obj: any): obj is File { + return opt.call(obj) === '[object File]' +} + +export function isBlob(obj: any): obj is Blob { + return opt.call(obj) === '[object Blob]' +} + +export function isUndefined(obj: any): obj is undefined { + return obj === undefined +} + +export function isNull(obj: any): obj is null { + return obj === null +} + +export function isFunction(obj: any): obj is (...args: any[]) => any { + return typeof obj === 'function' +} + +export function isEmptyObject(obj: any): boolean { + return isObject(obj) && Object.keys(obj).length === 0 +} + +export function isExist(obj: any): boolean { + return obj || obj === 0 +} + +export function isWindow(el: any): el is Window { + return el === window +} diff --git a/src/utils/monitor.ts b/src/utils/monitor.ts new file mode 100644 index 0000000..919bf24 --- /dev/null +++ b/src/utils/monitor.ts @@ -0,0 +1,24 @@ +import { App, ComponentPublicInstance } from 'vue' +import axios from 'axios' + +export default function handleError(Vue: App, baseUrl: string) { + if (!baseUrl) { + return + } + Vue.config.errorHandler = (err: unknown, instance: ComponentPublicInstance | null, info: string) => { + // send error info + axios.post(`${baseUrl}/report-error`, { + err, + instance, + info, + // location: window.location.href, + // message: err.message, + // stack: err.stack, + // browserInfo: getBrowserInfo(), + // user info + // dom info + // url info + // ... + }) + } +} diff --git a/src/utils/route-listener.ts b/src/utils/route-listener.ts new file mode 100644 index 0000000..f3e1b6b --- /dev/null +++ b/src/utils/route-listener.ts @@ -0,0 +1,28 @@ +/** + * Listening to routes alone would waste rendering performance. Use the publish-subscribe model for distribution management + * 单独监听路由会浪费渲染性能。使用发布订阅模式去进行分发管理。 + */ +import mitt, { Handler } from 'mitt' +import type { RouteLocationNormalized } from 'vue-router' + +const emitter = mitt() + +const key = Symbol('ROUTE_CHANGE') + +let latestRoute: RouteLocationNormalized + +export function setRouteEmitter(to: RouteLocationNormalized) { + emitter.emit(key, to) + latestRoute = to +} + +export function listenerRouteChange(handler: (route: RouteLocationNormalized) => void, immediate = true) { + emitter.on(key, handler as Handler) + if (immediate && latestRoute) { + handler(latestRoute) + } +} + +export function removeRouteListener() { + emitter.off(key) +} diff --git a/src/utils/setup-mock.ts b/src/utils/setup-mock.ts new file mode 100644 index 0000000..4cec9cf --- /dev/null +++ b/src/utils/setup-mock.ts @@ -0,0 +1,23 @@ +import debug from './env' + +export default ({ mock, setup }: { mock?: boolean; setup: () => void }) => { + if (mock !== false && debug) setup() +} + +export const successResponseWrap = (data: unknown) => { + return { + data, + status: 'ok', + msg: '请求成功', + code: 20000, + } +} + +export const failResponseWrap = (data: unknown, msg: string, code = 50000) => { + return { + data, + status: 'fail', + msg, + code, + } +} diff --git a/src/views/dashboard/monitor/components/chat-item.vue b/src/views/dashboard/monitor/components/chat-item.vue new file mode 100644 index 0000000..2dc403b --- /dev/null +++ b/src/views/dashboard/monitor/components/chat-item.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/views/dashboard/monitor/components/chat-list.vue b/src/views/dashboard/monitor/components/chat-list.vue new file mode 100644 index 0000000..b9d2191 --- /dev/null +++ b/src/views/dashboard/monitor/components/chat-list.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/src/views/dashboard/monitor/components/chat-panel.vue b/src/views/dashboard/monitor/components/chat-panel.vue new file mode 100644 index 0000000..726407e --- /dev/null +++ b/src/views/dashboard/monitor/components/chat-panel.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/src/views/dashboard/monitor/components/data-statistic-list.vue b/src/views/dashboard/monitor/components/data-statistic-list.vue new file mode 100644 index 0000000..064848d --- /dev/null +++ b/src/views/dashboard/monitor/components/data-statistic-list.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/src/views/dashboard/monitor/components/data-statistic.vue b/src/views/dashboard/monitor/components/data-statistic.vue new file mode 100644 index 0000000..4c7e167 --- /dev/null +++ b/src/views/dashboard/monitor/components/data-statistic.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/src/views/dashboard/monitor/components/quick-operation.vue b/src/views/dashboard/monitor/components/quick-operation.vue new file mode 100644 index 0000000..c37db88 --- /dev/null +++ b/src/views/dashboard/monitor/components/quick-operation.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/views/dashboard/monitor/components/studio-information.vue b/src/views/dashboard/monitor/components/studio-information.vue new file mode 100644 index 0000000..289b5dc --- /dev/null +++ b/src/views/dashboard/monitor/components/studio-information.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/views/dashboard/monitor/components/studio-status.vue b/src/views/dashboard/monitor/components/studio-status.vue new file mode 100644 index 0000000..b068b63 --- /dev/null +++ b/src/views/dashboard/monitor/components/studio-status.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/src/views/dashboard/monitor/components/studio.vue b/src/views/dashboard/monitor/components/studio.vue new file mode 100644 index 0000000..8103ec8 --- /dev/null +++ b/src/views/dashboard/monitor/components/studio.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/views/dashboard/monitor/index.vue b/src/views/dashboard/monitor/index.vue new file mode 100644 index 0000000..7154592 --- /dev/null +++ b/src/views/dashboard/monitor/index.vue @@ -0,0 +1,87 @@ + + + + + + + + + diff --git a/src/views/dashboard/monitor/locale/en-US.ts b/src/views/dashboard/monitor/locale/en-US.ts new file mode 100644 index 0000000..b064827 --- /dev/null +++ b/src/views/dashboard/monitor/locale/en-US.ts @@ -0,0 +1,48 @@ +export default { + 'menu.dashboard.monitor': 'Real-time Monitor', + 'monitor.title.chatPanel': 'Chat Window', + 'monitor.title.quickOperation': 'Quick Operation', + 'monitor.title.studioInfo': 'Studio Information', + 'monitor.title.studioPreview': 'Studio Preview', + 'monitor.chat.options.all': 'All', + 'monitor.chat.placeholder.searchCategory': 'Search Category', + 'monitor.chat.update': 'Update', + 'monitor.list.title.order': 'Order', + 'monitor.list.title.cover': 'Cover', + 'monitor.list.title.name': 'Name', + 'monitor.list.title.duration': 'Duration', + 'monitor.list.title.id': 'ID', + 'monitor.list.tip.rotations': 'Rotations ', + 'monitor.list.tip.rest': ', The program list is not visible to viewers', + 'monitor.list.tag.auditFailed': 'Audit Failed', + 'monitor.tab.title.liveMethod': 'Live Method', + 'monitor.tab.title.onlinePopulation': 'Online Population', + 'monitor.liveMethod.normal': 'Normal Live', + 'monitor.liveMethod.flowControl': 'Flow Control Live', + 'monitor.liveMethod.video': 'Video Live', + 'monitor.liveMethod.web': 'Web Live', + 'monitor.editCarousel': 'Edit', + 'monitor.startCarousel': 'Start', + 'monitor.quickOperation.changeClarity': 'Change the Clarity', + 'monitor.quickOperation.switchStream': 'Switch Stream', + 'monitor.quickOperation.removeClarity': 'Remove the Clarity', + 'monitor.quickOperation.pushFlowGasket': 'Push Flow Gasket', + 'monitor.studioInfo.label.studioTitle': 'Studio Title', + 'monitor.studioInfo.label.onlineNotification': 'Online Notification', + 'monitor.studioInfo.label.studioCategory': 'Studio Category', + 'monitor.studioInfo.placeholder.studioTitle': "'s Studio", + 'monitor.studioInfo.btn.fresh': 'Fresh', + 'monitor.studioStatus.title.studioStatus': 'Studio Status', + 'monitor.studioStatus.title.pictureInfo': 'Picture Information', + 'monitor.studioStatus.smooth': 'Smooth', + 'monitor.studioStatus.frameRate': 'Frame', + 'monitor.studioStatus.bitRate': 'Bit', + 'monitor.studioStatus.mainstream': 'Main', + 'monitor.studioStatus.hotStandby': 'Hot', + 'monitor.studioStatus.coldStandby': 'Cold', + 'monitor.studioStatus.line': 'Line', + 'monitor.studioStatus.play': 'Format', + 'monitor.studioStatus.pictureQuality': 'Quality', + 'monitor.studioPreview.studio': 'Studio', + 'monitor.studioPreview.watching': 'watching', +} diff --git a/src/views/dashboard/monitor/locale/zh-CN.ts b/src/views/dashboard/monitor/locale/zh-CN.ts new file mode 100644 index 0000000..0baebfd --- /dev/null +++ b/src/views/dashboard/monitor/locale/zh-CN.ts @@ -0,0 +1,48 @@ +export default { + 'menu.dashboard.monitor': '实时监控', + 'monitor.title.chatPanel': '聊天窗口', + 'monitor.title.quickOperation': '快捷操作', + 'monitor.title.studioInfo': '直播信息', + 'monitor.title.studioPreview': '直播预览', + 'monitor.chat.options.all': '全部', + 'monitor.chat.placeholder.searchCategory': '搜索类目', + 'monitor.chat.update': '更新', + 'monitor.list.title.order': '序号', + 'monitor.list.title.cover': '封面', + 'monitor.list.title.name': '名称', + 'monitor.list.title.duration': '视频时长', + 'monitor.list.title.id': '视频Id', + 'monitor.list.tip.rotations': '轮播次数', + 'monitor.list.tip.rest': ',节目单观众不可见', + 'monitor.list.tag.auditFailed': '审核未通过', + 'monitor.tab.title.liveMethod': '直播方式', + 'monitor.tab.title.onlinePopulation': '在线人数', + 'monitor.liveMethod.normal': '普通直播', + 'monitor.liveMethod.flowControl': '控流直播', + 'monitor.liveMethod.video': '视频直播', + 'monitor.liveMethod.web': '网页开播', + 'monitor.editCarousel': '编辑轮播', + 'monitor.startCarousel': '开始轮播', + 'monitor.quickOperation.changeClarity': '切换清晰度', + 'monitor.quickOperation.switchStream': '主备流切换', + 'monitor.quickOperation.removeClarity': '摘除清晰度', + 'monitor.quickOperation.pushFlowGasket': '推流垫片', + 'monitor.studioInfo.label.studioTitle': '直播标题', + 'monitor.studioInfo.label.onlineNotification': '上线通知', + 'monitor.studioInfo.label.studioCategory': '直播类目', + 'monitor.studioInfo.placeholder.studioTitle': '的直播间', + 'monitor.studioInfo.btn.fresh': '更新', + 'monitor.studioStatus.title.studioStatus': '直播状态', + 'monitor.studioStatus.title.pictureInfo': '画面信息', + 'monitor.studioStatus.smooth': '流畅', + 'monitor.studioStatus.frameRate': '帧率', + 'monitor.studioStatus.bitRate': '码率', + 'monitor.studioStatus.mainstream': '主流', + 'monitor.studioStatus.hotStandby': '热备', + 'monitor.studioStatus.coldStandby': '冷备', + 'monitor.studioStatus.line': '线路', + 'monitor.studioStatus.play': '播放格式', + 'monitor.studioStatus.pictureQuality': '画质', + 'monitor.studioPreview.studio': '直播间', + 'monitor.studioPreview.watching': '在看', +} diff --git a/src/views/dashboard/monitor/mock.ts b/src/views/dashboard/monitor/mock.ts new file mode 100644 index 0000000..100b67d --- /dev/null +++ b/src/views/dashboard/monitor/mock.ts @@ -0,0 +1,26 @@ +import Mock from 'mockjs' + +import setupMock, { + successResponseWrap, + // failResponseWrap, +} from '@/utils/setup-mock' + +setupMock({ + setup() { + Mock.mock(new RegExp('/api/chat/list'), () => { + // return failResponseWrap(null, '重新登陆', 50008); + const data = Mock.mock({ + 'data|4-6': [ + { + 'id|+1': 1, + username: '用户7352772', + content: '马上就开始了,好激动!', + time: '13:09:12', + 'isCollect|2': true, + }, + ], + }) + return successResponseWrap(data.data) + }) + }, +}) diff --git a/src/views/dashboard/workplace/components/announcement.vue b/src/views/dashboard/workplace/components/announcement.vue new file mode 100644 index 0000000..8074981 --- /dev/null +++ b/src/views/dashboard/workplace/components/announcement.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/src/views/dashboard/workplace/components/banner.vue b/src/views/dashboard/workplace/components/banner.vue new file mode 100644 index 0000000..06e81b7 --- /dev/null +++ b/src/views/dashboard/workplace/components/banner.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/views/dashboard/workplace/components/carousel.vue b/src/views/dashboard/workplace/components/carousel.vue new file mode 100644 index 0000000..c0af219 --- /dev/null +++ b/src/views/dashboard/workplace/components/carousel.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/views/dashboard/workplace/components/categories-percent.vue b/src/views/dashboard/workplace/components/categories-percent.vue new file mode 100644 index 0000000..7d50318 --- /dev/null +++ b/src/views/dashboard/workplace/components/categories-percent.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/src/views/dashboard/workplace/components/content-chart.vue b/src/views/dashboard/workplace/components/content-chart.vue new file mode 100644 index 0000000..75559cf --- /dev/null +++ b/src/views/dashboard/workplace/components/content-chart.vue @@ -0,0 +1,197 @@ + + + + + diff --git a/src/views/dashboard/workplace/components/data-panel.vue b/src/views/dashboard/workplace/components/data-panel.vue new file mode 100644 index 0000000..35a6d31 --- /dev/null +++ b/src/views/dashboard/workplace/components/data-panel.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/src/views/dashboard/workplace/components/docs.vue b/src/views/dashboard/workplace/components/docs.vue new file mode 100644 index 0000000..1a13802 --- /dev/null +++ b/src/views/dashboard/workplace/components/docs.vue @@ -0,0 +1,42 @@ + + + diff --git a/src/views/dashboard/workplace/components/popular-content.vue b/src/views/dashboard/workplace/components/popular-content.vue new file mode 100644 index 0000000..67311aa --- /dev/null +++ b/src/views/dashboard/workplace/components/popular-content.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/src/views/dashboard/workplace/components/quick-operation.vue b/src/views/dashboard/workplace/components/quick-operation.vue new file mode 100644 index 0000000..de988ad --- /dev/null +++ b/src/views/dashboard/workplace/components/quick-operation.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/src/views/dashboard/workplace/components/recently-visited.vue b/src/views/dashboard/workplace/components/recently-visited.vue new file mode 100644 index 0000000..9d9c2cc --- /dev/null +++ b/src/views/dashboard/workplace/components/recently-visited.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/views/dashboard/workplace/index.vue b/src/views/dashboard/workplace/index.vue new file mode 100644 index 0000000..e63a518 --- /dev/null +++ b/src/views/dashboard/workplace/index.vue @@ -0,0 +1,144 @@ + + + + + + + + + diff --git a/src/views/dashboard/workplace/locale/en-US.ts b/src/views/dashboard/workplace/locale/en-US.ts new file mode 100644 index 0000000..f154d6a --- /dev/null +++ b/src/views/dashboard/workplace/locale/en-US.ts @@ -0,0 +1,38 @@ +export default { + 'menu.dashboard.workplace': 'Workplace', + 'workplace.welcome': 'Welcome!', + 'workplace.balance': 'Balance (CNY)', + 'workplace.order.pending': 'Pending', + 'workplace.order.pendingRenewal': 'Renewal Order', + 'workplace.onlineContent': 'Online Content', + 'workplace.putIn': 'Put In', + 'workplace.newDay': 'Daily Additional Comments', + 'workplace.newFromYesterday': 'New From Yesterday', + 'workplace.minute': 'Min', + 'workplace.docs': 'Documents', + 'workplace.docs.productOverview': 'Product Overview', + 'workplace.docs.userGuide': 'User Guide', + 'workplace.docs.workflow': 'Workflow', + 'workplace.docs.interfaceDocs': 'Interface Docs', + // + 'workplace.contentManagement': 'Content Management', + 'workplace.contentStatistical': 'Content Statistical', + 'workplace.advanced': 'Advanced', + 'workplace.onlinePromotion': 'Online Promotion', + 'workplace.contentPutIn': 'Put In', + 'workplace.announcement': 'Announcement', + 'workplace.recently.visited': 'Recently Visited', + 'workplace.record.nodata': 'No data', + 'workplace.quick.operation': 'Quick Operation', + 'workplace.quickOperation.setup': 'Setup', + 'workplace.allProject': 'All', + 'workplace.loadMore': 'More', + 'workplace.viewMore': 'More', + 'workplace.contentData': 'Content Data', + 'workplace.popularContent': 'Popular Content', + 'workplace.popularContent.text': 'text', + 'workplace.popularContent.image': 'image', + 'workplace.popularContent.video': 'video', + 'workplace.categoriesPercent': 'Categories Percent', + 'workplace.pecs': 'pecs', +} diff --git a/src/views/dashboard/workplace/locale/zh-CN.ts b/src/views/dashboard/workplace/locale/zh-CN.ts new file mode 100644 index 0000000..f2f23d3 --- /dev/null +++ b/src/views/dashboard/workplace/locale/zh-CN.ts @@ -0,0 +1,37 @@ +export default { + 'menu.dashboard.workplace': '工作台', + 'workplace.welcome': '欢迎回来!', + 'workplace.balance': '余额(元)', + 'workplace.order.pending': '待支付', + 'workplace.order.pendingRenewal': '待续费订单', + 'workplace.onlineContent': '线上总内容', + 'workplace.putIn': '投放中内容', + 'workplace.newDay': '日新增评论', + 'workplace.newFromYesterday': '较昨日新增', + 'workplace.minute': '分钟', + 'workplace.docs': '帮助文档', + 'workplace.docs.productOverview': '产品概要', + 'workplace.docs.userGuide': '使用指南', + 'workplace.docs.workflow': '接入流程', + 'workplace.docs.interfaceDocs': '接口文档', + 'workplace.contentManagement': '内容管理', + 'workplace.contentStatistical': '内容分析', + 'workplace.advanced': '高级管理', + 'workplace.onlinePromotion': '线上推广', + 'workplace.contentPutIn': '内容投放', + 'workplace.announcement': '公告', + 'workplace.recently.visited': '最近访问', + 'workplace.record.nodata': '暂无数据', + 'workplace.quick.operation': '快捷操作', + 'workplace.quickOperation.setup': '管理', + 'workplace.allProject': '所有项目', + 'workplace.loadMore': '加载更多', + 'workplace.viewMore': '查看更多', + 'workplace.contentData': '内容数据', + 'workplace.popularContent': '线上热门内容', + 'workplace.popularContent.text': '文本', + 'workplace.popularContent.image': '图片', + 'workplace.popularContent.video': '视频', + 'workplace.categoriesPercent': '内容类型占比', + 'workplace.pecs': '个', +} diff --git a/src/views/dashboard/workplace/mock.ts b/src/views/dashboard/workplace/mock.ts new file mode 100644 index 0000000..7c10070 --- /dev/null +++ b/src/views/dashboard/workplace/mock.ts @@ -0,0 +1,129 @@ +import Mock from 'mockjs' +import qs from 'query-string' +import dayjs from 'dayjs' +import { GetParams } from '@/types/global' +import setupMock, { successResponseWrap } from '@/utils/setup-mock' + +const textList = [ + { + key: 1, + clickNumber: '346.3w+', + title: '经济日报:财政政策要精准提升…', + increases: 35, + }, + { + key: 2, + clickNumber: '324.2w+', + title: '双12遇冷,消费者厌倦了电商平…', + increases: 22, + }, + { + key: 3, + clickNumber: '318.9w+', + title: '致敬坚守战“疫”一线的社区工作…', + increases: 9, + }, + { + key: 4, + clickNumber: '257.9w+', + title: '普高还是职高?家长们陷入选择…', + increases: 17, + }, + { + key: 5, + clickNumber: '124.2w+', + title: '人民快评:没想到“浓眉大眼”的…', + increases: 37, + }, +] +const imageList = [ + { + key: 1, + clickNumber: '15.3w+', + title: '杨涛接替陆慷出任外交部美大司…', + increases: 15, + }, + { + key: 2, + clickNumber: '12.2w+', + title: '图集:龙卷风袭击美国多州房屋…', + increases: 26, + }, + { + key: 3, + clickNumber: '18.9w+', + title: '52岁大姐贴钱照顾自闭症儿童八…', + increases: 9, + }, + { + key: 4, + clickNumber: '7.9w+', + title: '杭州一家三口公园宿营取暖中毒', + increases: 0, + }, + { + key: 5, + clickNumber: '5.2w+', + title: '派出所副所长威胁市民?警方调…', + increases: 4, + }, +] +const videoList = [ + { + key: 1, + clickNumber: '367.6w+', + title: '这是今日10点的南京', + increases: 5, + }, + { + key: 2, + clickNumber: '352.2w+', + title: '立陶宛不断挑衅致经济受损民众…', + increases: 17, + }, + { + key: 3, + clickNumber: '348.9w+', + title: '韩国艺人刘在石确诊新冠', + increases: 30, + }, + { + key: 4, + clickNumber: '346.3w+', + title: '关于北京冬奥会,文在寅表态', + increases: 12, + }, + { + key: 5, + clickNumber: '271.2w+', + title: '95后现役军人荣立一等功', + increases: 2, + }, +] +setupMock({ + setup() { + Mock.mock(new RegExp('/api/content-data'), () => { + const presetData = [58, 81, 53, 90, 64, 88, 49, 79] + const getLineData = () => { + const count = 8 + return new Array(count).fill(0).map((el, idx) => ({ + x: dayjs() + .day(idx - 2) + .format('YYYY-MM-DD'), + y: presetData[idx], + })) + } + return successResponseWrap([...getLineData()]) + }) + Mock.mock(new RegExp('/api/popular/list'), (params: GetParams) => { + const { type = 'text' } = qs.parseUrl(params.url).query + if (type === 'image') { + return successResponseWrap([...videoList]) + } + if (type === 'video') { + return successResponseWrap([...imageList]) + } + return successResponseWrap([...textList]) + }) + }, +}) diff --git a/src/views/exception/403/index.vue b/src/views/exception/403/index.vue new file mode 100644 index 0000000..0ceabf3 --- /dev/null +++ b/src/views/exception/403/index.vue @@ -0,0 +1,37 @@ + + + + + + + diff --git a/src/views/exception/403/locale/en-US.ts b/src/views/exception/403/locale/en-US.ts new file mode 100644 index 0000000..d41d1e8 --- /dev/null +++ b/src/views/exception/403/locale/en-US.ts @@ -0,0 +1,5 @@ +export default { + 'menu.exception.403': '403', + 'exception.result.403.description': 'Access to this resource on the server is denied.', + 'exception.result.403.back': 'Back', +} diff --git a/src/views/exception/403/locale/zh-CN.ts b/src/views/exception/403/locale/zh-CN.ts new file mode 100644 index 0000000..7dadff5 --- /dev/null +++ b/src/views/exception/403/locale/zh-CN.ts @@ -0,0 +1,5 @@ +export default { + 'menu.exception.403': '403', + 'exception.result.403.description': '对不起,您没有访问该资源的权限', + 'exception.result.403.back': '返回', +} diff --git a/src/views/exception/404/index.vue b/src/views/exception/404/index.vue new file mode 100644 index 0000000..165f908 --- /dev/null +++ b/src/views/exception/404/index.vue @@ -0,0 +1,42 @@ + + + + + + + diff --git a/src/views/exception/404/locale/en-US.ts b/src/views/exception/404/locale/en-US.ts new file mode 100644 index 0000000..1833e29 --- /dev/null +++ b/src/views/exception/404/locale/en-US.ts @@ -0,0 +1,6 @@ +export default { + 'menu.exception.404': '404', + 'exception.result.404.description': 'Whoops, this page is gone.', + 'exception.result.404.retry': 'Retry', + 'exception.result.404.back': 'Back', +} diff --git a/src/views/exception/404/locale/zh-CN.ts b/src/views/exception/404/locale/zh-CN.ts new file mode 100644 index 0000000..331dda7 --- /dev/null +++ b/src/views/exception/404/locale/zh-CN.ts @@ -0,0 +1,6 @@ +export default { + 'menu.exception.404': '404', + 'exception.result.404.description': '抱歉,页面不见了~', + 'exception.result.404.retry': '重试', + 'exception.result.404.back': '返回', +} diff --git a/src/views/exception/500/index.vue b/src/views/exception/500/index.vue new file mode 100644 index 0000000..c0d3b29 --- /dev/null +++ b/src/views/exception/500/index.vue @@ -0,0 +1,37 @@ + + + + + + + diff --git a/src/views/exception/500/locale/en-US.ts b/src/views/exception/500/locale/en-US.ts new file mode 100644 index 0000000..8a921dd --- /dev/null +++ b/src/views/exception/500/locale/en-US.ts @@ -0,0 +1,5 @@ +export default { + 'menu.exception.500': '500', + 'exception.result.500.description': 'Internal server error', + 'exception.result.500.back': 'Back', +} diff --git a/src/views/exception/500/locale/zh-CN.ts b/src/views/exception/500/locale/zh-CN.ts new file mode 100644 index 0000000..f077b5a --- /dev/null +++ b/src/views/exception/500/locale/zh-CN.ts @@ -0,0 +1,5 @@ +export default { + 'menu.exception.500': '500', + 'exception.result.500.description': '抱歉,服务器出了点问题~', + 'exception.result.500.back': '返回', +} diff --git a/src/views/list/card/components/card-wrap.vue b/src/views/list/card/components/card-wrap.vue new file mode 100644 index 0000000..9140606 --- /dev/null +++ b/src/views/list/card/components/card-wrap.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/src/views/list/card/components/quality-inspection.vue b/src/views/list/card/components/quality-inspection.vue new file mode 100644 index 0000000..7e53650 --- /dev/null +++ b/src/views/list/card/components/quality-inspection.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/views/list/card/components/rules-preset.vue b/src/views/list/card/components/rules-preset.vue new file mode 100644 index 0000000..7300700 --- /dev/null +++ b/src/views/list/card/components/rules-preset.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/views/list/card/components/the-service.vue b/src/views/list/card/components/the-service.vue new file mode 100644 index 0000000..96c194c --- /dev/null +++ b/src/views/list/card/components/the-service.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/views/list/card/index.vue b/src/views/list/card/index.vue new file mode 100644 index 0000000..47e4421 --- /dev/null +++ b/src/views/list/card/index.vue @@ -0,0 +1,92 @@ + + + + + + + diff --git a/src/views/list/card/locale/en-US.ts b/src/views/list/card/locale/en-US.ts new file mode 100644 index 0000000..dfaa2f8 --- /dev/null +++ b/src/views/list/card/locale/en-US.ts @@ -0,0 +1,19 @@ +export default { + 'menu.list.cardList': 'Card List', + 'cardList.tab.title.all': 'All', + 'cardList.tab.title.content': 'Quality Inspection', + 'cardList.tab.title.service': 'The service', + 'cardList.tab.title.preset': 'Rules Preset', + 'cardList.searchInput.placeholder': 'Search', + 'cardList.enable': 'Enable', + 'cardList.disable': 'Disable', + 'cardList.content.delete': 'Delete', + 'cardList.content.inspection': 'Inspection', + 'cardList.content.action': 'Click Create Qc Content queue', + 'cardList.service.open': 'Open', + 'cardList.service.cancel': 'Cancel', + 'cardList.service.renew': 'Contract of service', + 'cardList.service.tag': 'Opened', + 'cardList.service.expiresTag': 'Expired', + 'cardList.preset.tag': 'Enable', +} diff --git a/src/views/list/card/locale/zh-CN.ts b/src/views/list/card/locale/zh-CN.ts new file mode 100644 index 0000000..8a71558 --- /dev/null +++ b/src/views/list/card/locale/zh-CN.ts @@ -0,0 +1,19 @@ +export default { + 'menu.list.cardList': '卡片列表', + 'cardList.tab.title.all': '全部', + 'cardList.tab.title.content': '内容质检', + 'cardList.tab.title.service': '开通服务', + 'cardList.tab.title.preset': '规则预置', + 'cardList.searchInput.placeholder': '搜索', + // 'cardList.statistic.enable': '已启用', + // 'cardList.statistic.disable': '未启用', + 'cardList.content.delete': '删除', + 'cardList.content.inspection': '质检', + 'cardList.content.action': '点击创建质检内容队列', + 'cardList.service.open': '开通服务', + 'cardList.service.cancel': '取消服务', + 'cardList.service.renew': '续约服务', + 'cardList.service.tag': '已开通', + 'cardList.service.expiresTag': '已过期', + 'cardList.preset.tag': '已启用', +} diff --git a/src/views/list/card/mock.ts b/src/views/list/card/mock.ts new file mode 100644 index 0000000..e4c1065 --- /dev/null +++ b/src/views/list/card/mock.ts @@ -0,0 +1,179 @@ +import Mock from 'mockjs' +import setupMock, { successResponseWrap } from '@/utils/setup-mock' +import { ServiceRecord } from '@/api/list' + +const qualityInspectionList: ServiceRecord[] = [ + { + id: 1, + name: 'quality', + title: '视频类-历史导入', + description: '2021-10-12 00:00:00', + data: [ + { + label: '待质检数', + value: '120', + }, + { + label: '积压时长', + value: '60s', + }, + { + label: '待抽检数', + value: '0', + }, + ], + }, + { + id: 2, + name: 'quality', + title: '图文类-图片版权', + description: '2021-12-11 18:30:00', + data: [ + { + label: '待质检数', + value: '120', + }, + { + label: '积压时长', + value: '60s', + }, + { + label: '待抽检数', + value: '0', + }, + ], + }, + { + id: 3, + name: 'quality', + title: '图文类-高清图片', + description: '2021-10-15 08:10:00', + data: [ + { + label: '待质检数', + value: '120', + }, + { + label: '积压时长', + value: '60s', + }, + { + label: '待抽检数', + value: '0', + }, + ], + }, +] +const theServiceList: ServiceRecord[] = [ + { + id: 1, + icon: 'code', + title: '漏斗分析', + description: '用户行为分析之漏斗分析模型是企业实现精细化运营、进行用户行为分析的重要数据分析模型。', + enable: true, + actionType: 'button', + }, + { + id: 2, + icon: 'edit', + title: '用户分布', + description: '快速诊断用户人群,地域细分情况,了解数据分布的集中度,以及主要的数据分布的区间段是什么。', + enable: true, + actionType: 'button', + expires: true, + }, + { + id: 3, + icon: 'user', + title: '资源分发', + description: '移动端动态化资源分发解决方案。提供稳定大流量服务支持、灵活定制的分发圈选规则,通过离线化预加载。', + enable: false, + actionType: 'button', + }, + { + id: 4, + icon: 'user', + title: '用户画像分析', + description: '用户画像就是将典型用户信息标签化,根据用户特征、业务场景和用户行为等信息,构建一个标签化的用户模型。', + enable: true, + actionType: 'button', + }, +] +const rulesPresetList: ServiceRecord[] = [ + { + id: 1, + title: '内容屏蔽规则', + description: '用户在执行特定的内容分发任务时,可使用内容屏蔽规则根据特定标签,过滤内容集合。', + enable: true, + actionType: 'switch', + }, + { + id: 2, + title: '内容置顶规则', + description: '该规则支持用户在执行特定内容分发任务时,对固定的几条内容置顶。', + enable: true, + actionType: 'switch', + }, + { + id: 3, + title: '内容加权规则', + description: '选定内容加权规则后可自定义从不同内容集合获取内容的概率。', + enable: false, + actionType: 'switch', + }, + { + id: 4, + title: '内容分发规则', + description: '内容分发时,对某些内容需要固定在C端展示的位置。', + enable: true, + actionType: 'switch', + }, + { + id: 5, + title: '违禁内容识别', + description: '精准识别赌博、刀枪、毒品、造假、贩假等违规物品和违规行为。', + enable: false, + actionType: 'switch', + }, + { + id: 6, + title: '多语言文字符号识别', + description: '精准识别英语、维语、藏语、蒙古语、朝鲜语等多种语言以及emoji表情形态的语义识别。', + enable: false, + actionType: 'switch', + }, +] + +setupMock({ + setup() { + // Quality Inspection + Mock.mock(new RegExp('/api/list/quality-inspection'), () => { + return successResponseWrap( + qualityInspectionList.map((_, index) => ({ + ...qualityInspectionList[index % qualityInspectionList.length], + id: Mock.Random.guid(), + })) + ) + }) + + // the service + Mock.mock(new RegExp('/api/list/the-service'), () => { + return successResponseWrap( + theServiceList.map((_, index) => ({ + ...theServiceList[index % theServiceList.length], + id: Mock.Random.guid(), + })) + ) + }) + + // rules preset + Mock.mock(new RegExp('/api/list/rules-preset'), () => { + return successResponseWrap( + rulesPresetList.map((_, index) => ({ + ...rulesPresetList[index % rulesPresetList.length], + id: Mock.Random.guid(), + })) + ) + }) + }, +}) diff --git a/src/views/list/search-table/index.vue b/src/views/list/search-table/index.vue new file mode 100644 index 0000000..adcb5fa --- /dev/null +++ b/src/views/list/search-table/index.vue @@ -0,0 +1,429 @@ + + + + + + + diff --git a/src/views/list/search-table/locale/en-US.ts b/src/views/list/search-table/locale/en-US.ts new file mode 100644 index 0000000..669ca80 --- /dev/null +++ b/src/views/list/search-table/locale/en-US.ts @@ -0,0 +1,44 @@ +export default { + 'menu.list.searchTable': 'Search Table', + 'searchTable.form.number': 'Set Number', + 'searchTable.form.number.placeholder': 'Please enter Set Number', + 'searchTable.form.name': 'Set Name', + 'searchTable.form.name.placeholder': 'Please enter Set Name', + 'searchTable.form.contentType': 'Content Type', + 'searchTable.form.contentType.img': 'image-text', + 'searchTable.form.contentType.horizontalVideo': 'Horizontal short video', + 'searchTable.form.contentType.verticalVideo': 'Vertical short video', + 'searchTable.form.filterType': 'Filter Type', + 'searchTable.form.filterType.artificial': 'artificial', + 'searchTable.form.filterType.rules': 'Rules', + 'searchTable.form.createdTime': 'Create Date', + 'searchTable.form.status': 'Status', + 'searchTable.form.status.online': 'Online', + 'searchTable.form.status.offline': 'Offline', + 'searchTable.form.search': 'Search', + 'searchTable.form.reset': 'Reset', + 'searchTable.form.selectDefault': 'All', + 'searchTable.operation.create': 'Create', + 'searchTable.operation.import': 'Import', + 'searchTable.operation.download': 'Download', + // columns + 'searchTable.columns.index': '#', + 'searchTable.columns.number': 'Set Number', + 'searchTable.columns.name': 'Set Name', + 'searchTable.columns.contentType': 'Content Type', + 'searchTable.columns.filterType': 'Filter Type', + 'searchTable.columns.count': 'Count', + 'searchTable.columns.createdTime': 'CreatedTime', + 'searchTable.columns.status': 'Status', + 'searchTable.columns.operations': 'Operations', + 'searchTable.columns.operations.view': 'View', + // size + 'searchTable.size.mini': 'mini', + 'searchTable.size.small': 'small', + 'searchTable.size.medium': 'middle', + 'searchTable.size.large': 'large', + // actions + 'searchTable.actions.refresh': 'refresh', + 'searchTable.actions.density': 'density', + 'searchTable.actions.columnSetting': 'columnSetting', +} diff --git a/src/views/list/search-table/locale/zh-CN.ts b/src/views/list/search-table/locale/zh-CN.ts new file mode 100644 index 0000000..b8f1cf5 --- /dev/null +++ b/src/views/list/search-table/locale/zh-CN.ts @@ -0,0 +1,45 @@ +export default { + 'menu.list.searchTable': '查询表格', + 'searchTable.form.number': '集合编号', + 'searchTable.form.number.placeholder': '请输入集合编号', + 'searchTable.form.name': '集合名称', + 'searchTable.form.name.placeholder': '请输入集合名称', + 'searchTable.form.contentType': '内容体裁', + 'searchTable.form.contentType.img': '图文', + 'searchTable.form.contentType.horizontalVideo': '横版短视频', + 'searchTable.form.contentType.verticalVideo': '竖版小视频', + 'searchTable.form.filterType': '筛选方式', + 'searchTable.form.filterType.artificial': '人工筛选', + 'searchTable.form.filterType.rules': '规则筛选', + 'searchTable.form.createdTime': '创建时间', + 'searchTable.form.status': '状态', + 'searchTable.form.status.online': '已上线', + 'searchTable.form.status.offline': '已下线', + 'searchTable.form.search': '查询', + 'searchTable.form.reset': '重置', + 'searchTable.form.selectDefault': '全部', + 'searchTable.operation.create': '新建', + 'searchTable.operation.import': '批量导入', + 'searchTable.operation.download': '下载', + // columns + 'searchTable.columns.index': '#', + 'searchTable.columns.number': '集合编号', + 'searchTable.columns.name': '集合名称', + 'searchTable.columns.contentType': '内容体裁', + 'searchTable.columns.filterType': '筛选方式', + 'searchTable.columns.count': '内容量', + 'searchTable.columns.createdTime': '创建时间', + 'searchTable.columns.status': '状态', + 'searchTable.columns.operations': '操作', + 'searchTable.columns.operations.view': '查看', + + // size + 'searchTable.size.mini': '迷你', + 'searchTable.size.small': '偏小', + 'searchTable.size.medium': '中等', + 'searchTable.size.large': '偏大', + // actions + 'searchTable.actions.refresh': '刷新', + 'searchTable.actions.density': '密度', + 'searchTable.actions.columnSetting': '列设置', +} diff --git a/src/views/list/search-table/mock.ts b/src/views/list/search-table/mock.ts new file mode 100644 index 0000000..bad899d --- /dev/null +++ b/src/views/list/search-table/mock.ts @@ -0,0 +1,35 @@ +import Mock from 'mockjs' +import qs from 'query-string' +import setupMock, { successResponseWrap } from '@/utils/setup-mock' +import { GetParams } from '@/types/global' + +const { Random } = Mock + +const data = Mock.mock({ + 'list|55': [ + { + 'id|8': /[A-Z][a-z][-][0-9]/, + 'number|2-3': /[0-9]/, + 'name|4-8': /[A-Z]/, + 'contentType|1': ['img', 'horizontalVideo', 'verticalVideo'], + 'count|2-3': /[0-9]/, + 'status|1': ['online', 'offline'], + 'filterType|1': ['artificial', 'rules'], + createdTime: Random.datetime(), + }, + ], +}) + +setupMock({ + setup() { + Mock.mock(new RegExp('/api/list/policy'), (params: GetParams) => { + const { current = 1, pageSize = 10 } = qs.parseUrl(params.url).query + const p = current as number + const ps = pageSize as number + return successResponseWrap({ + list: data.list.slice((p - 1) * ps, p * ps), + total: 55, + }) + }) + }, +}) diff --git a/src/views/login/components/banner.vue b/src/views/login/components/banner.vue new file mode 100644 index 0000000..77b38f1 --- /dev/null +++ b/src/views/login/components/banner.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/views/login/components/login-form.vue b/src/views/login/components/login-form.vue new file mode 100644 index 0000000..995b25e --- /dev/null +++ b/src/views/login/components/login-form.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/src/views/login/index.vue b/src/views/login/index.vue new file mode 100644 index 0000000..1681d4f --- /dev/null +++ b/src/views/login/index.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/src/views/login/locale/en-US.ts b/src/views/login/locale/en-US.ts new file mode 100644 index 0000000..e857174 --- /dev/null +++ b/src/views/login/locale/en-US.ts @@ -0,0 +1,19 @@ +export default { + 'login.form.title': 'Login to 智能运维管理系统', + 'login.form.userName.errMsg': 'Username cannot be empty', + 'login.form.password.errMsg': 'Password cannot be empty', + 'login.form.login.errMsg': 'Login error, refresh and try again', + 'login.form.login.success': 'welcome to use', + 'login.form.userName.placeholder': 'Username: admin', + 'login.form.password.placeholder': 'Password: admin', + 'login.form.rememberPassword': 'Remember password', + 'login.form.forgetPassword': 'Forgot password', + 'login.form.login': 'login', + 'login.form.register': 'register account', + 'login.banner.slogan1': 'Out-of-the-box high-quality template', + 'login.banner.subSlogan1': 'Rich page templates, covering most typical business scenarios', + 'login.banner.slogan2': 'Built-in solutions to common problems', + 'login.banner.subSlogan2': 'Internationalization, routing configuration, state management everything', + 'login.banner.slogan3': 'Access visualization enhancement tool AUX', + 'login.banner.subSlogan3': 'Realize flexible block development', +} diff --git a/src/views/login/locale/zh-CN.ts b/src/views/login/locale/zh-CN.ts new file mode 100644 index 0000000..baeb404 --- /dev/null +++ b/src/views/login/locale/zh-CN.ts @@ -0,0 +1,19 @@ +export default { + 'login.form.title': '登录 智能运维管理系统', + 'login.form.userName.errMsg': '用户名不能为空', + 'login.form.password.errMsg': '密码不能为空', + 'login.form.login.errMsg': '登录出错,轻刷新重试', + 'login.form.login.success': '欢迎使用', + 'login.form.userName.placeholder': '用户名:admin', + 'login.form.password.placeholder': '密码:admin', + 'login.form.rememberPassword': '记住密码', + 'login.form.forgetPassword': '忘记密码', + 'login.form.login': '登录', + 'login.form.register': '注册账号', + 'login.banner.slogan1': 'x', + 'login.banner.subSlogan1': 'x', + 'login.banner.slogan2': '内置了常见问题的解决方案', + 'login.banner.subSlogan2': '国际化,路由配置,状态管理应有尽有', + 'login.banner.slogan3': '接入可视化增强工具AUX', + 'login.banner.subSlogan3': '实现灵活的区块式开发', +} diff --git a/src/views/not-found/index.vue b/src/views/not-found/index.vue new file mode 100644 index 0000000..ac032c4 --- /dev/null +++ b/src/views/not-found/index.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/views/profile/basic/components/operation-log.vue b/src/views/profile/basic/components/operation-log.vue new file mode 100644 index 0000000..1fe27ca --- /dev/null +++ b/src/views/profile/basic/components/operation-log.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/src/views/profile/basic/components/profile-item.vue b/src/views/profile/basic/components/profile-item.vue new file mode 100644 index 0000000..9fb0d30 --- /dev/null +++ b/src/views/profile/basic/components/profile-item.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/views/profile/basic/index.vue b/src/views/profile/basic/index.vue new file mode 100644 index 0000000..506d0c9 --- /dev/null +++ b/src/views/profile/basic/index.vue @@ -0,0 +1,83 @@ + + + + + + + diff --git a/src/views/profile/basic/locale/en-US.ts b/src/views/profile/basic/locale/en-US.ts new file mode 100644 index 0000000..2faf24d --- /dev/null +++ b/src/views/profile/basic/locale/en-US.ts @@ -0,0 +1,39 @@ +export default { + 'menu.profile.basic': 'Basic Profile', + 'basicProfile.title.form': 'Parameter Approval Process Table', + 'basicProfile.steps.commit': 'Commit', + 'basicProfile.steps.approval': 'Approval', + 'basicProfile.steps.finish': 'Finish', + 'basicProfile.title.currentParams': 'Current Parameters', + 'basicProfile.title.originParams': 'Original Parameters', + 'basicProfile.title.video': 'Video Parameters', + 'basicProfile.title.audio': 'Audio Parameters', + 'basicProfile.title.preVideo': 'Original video parameters', + 'basicProfile.title.preAudio': 'Original audio parameters', + 'basicProfile.label.video.mode': 'Match Mode', + 'basicProfile.label.video.acquisition.resolution': 'Acquisition Resolution', + 'basicProfile.label.video.acquisition.frameRate': 'Acquisition Frame Rate', + 'basicProfile.label.video.encoding.resolution': 'Encoding Resolution', + 'basicProfile.label.video.encoding.rate.min': 'Encoding Min Rate', + 'basicProfile.label.video.encoding.rate.max': 'Encoding Max Rate', + 'basicProfile.label.video.encoding.rate.default': 'Encoding Default Rate', + 'basicProfile.label.video.encoding.frameRate': 'Encoding Frame Rate', + 'basicProfile.label.video.encoding.profile': 'Encoding Profile', + 'basicProfile.label.audio.mode': 'Match Mode', + 'basicProfile.label.audio.acquisition.channels': 'Acquisition Channels', + 'basicProfile.label.audio.encoding.channels': 'Encoding Channels', + 'basicProfile.label.audio.encoding.rate': 'Encoding Rate', + 'basicProfile.label.audio.encoding.profile': 'Encoding Profile', + 'basicProfile.unit.audio.channels': 'channels', + 'basicProfile.goBack': 'GoBack', + 'basicProfile.cancel': 'Cancel Process', + 'basicProfile.title.operationLog': 'Operation Log', + 'basicProfile.column.contentNumber': 'Content Number', + 'basicProfile.column.updateContent': 'Update Content', + 'basicProfile.column.status': 'Status', + 'basicProfile.column.updateTime': 'Update Time', + 'basicProfile.column.operation': 'Operation', + 'basicProfile.cell.pass': 'Pass', + 'basicProfile.cell.auditing': 'Auditing', + 'basicProfile.cell.view': 'View', +} diff --git a/src/views/profile/basic/locale/zh-CN.ts b/src/views/profile/basic/locale/zh-CN.ts new file mode 100644 index 0000000..b82c2b0 --- /dev/null +++ b/src/views/profile/basic/locale/zh-CN.ts @@ -0,0 +1,39 @@ +export default { + 'menu.profile.basic': '基础详情页', + 'basicProfile.title.form': '参数审批流程表', + 'basicProfile.steps.commit': '提交修改', + 'basicProfile.steps.approval': '审批中', + 'basicProfile.steps.finish': '修改完成', + 'basicProfile.title.currentParams': '修改后参数', + 'basicProfile.title.originParams': '原参数', + 'basicProfile.title.video': '现视频参数', + 'basicProfile.title.preVideo': '原视频参数', + 'basicProfile.title.audio': '现音频参数', + 'basicProfile.title.preAudio': '原音频参数', + 'basicProfile.label.video.mode': '匹配模式', + 'basicProfile.label.video.acquisition.resolution': '采集分辨率', + 'basicProfile.label.video.acquisition.frameRate': '采集帧率', + 'basicProfile.label.video.encoding.resolution': '编码分辨率', + 'basicProfile.label.video.encoding.rate.min': '编码码率最小值', + 'basicProfile.label.video.encoding.rate.max': '编码码率最大值', + 'basicProfile.label.video.encoding.rate.default': '编码码率默认值', + 'basicProfile.label.video.encoding.frameRate': '编码帧率', + 'basicProfile.label.video.encoding.profile': '编码profile', + 'basicProfile.label.audio.mode': '匹配模式', + 'basicProfile.label.audio.acquisition.channels': '采集声道数', + 'basicProfile.label.audio.encoding.channels': '编码声道数', + 'basicProfile.label.audio.encoding.rate': '编码码率', + 'basicProfile.label.audio.encoding.profile': '编码 profile', + 'basicProfile.unit.audio.channels': '声道', + 'basicProfile.goBack': '返回', + 'basicProfile.cancel': '取消流程', + 'basicProfile.title.operationLog': '参数调整记录', + 'basicProfile.column.contentNumber': '内容编号', + 'basicProfile.column.updateContent': '调整内容', + 'basicProfile.column.status': '当前状态', + 'basicProfile.column.updateTime': '修改时间', + 'basicProfile.column.operation': '操作', + 'basicProfile.cell.pass': '已通过', + 'basicProfile.cell.auditing': '审核中', + 'basicProfile.cell.view': '查看', +} diff --git a/src/views/profile/basic/mock.ts b/src/views/profile/basic/mock.ts new file mode 100644 index 0000000..789dbfa --- /dev/null +++ b/src/views/profile/basic/mock.ts @@ -0,0 +1,58 @@ +import Mock from 'mockjs' +import setupMock, { successResponseWrap } from '@/utils/setup-mock' + +setupMock({ + setup() { + Mock.mock(new RegExp('/api/profile/basic'), () => { + return successResponseWrap({ + status: 2, + video: { + mode: '自定义', + acquisition: { + resolution: '720*1280', + frameRate: 15, + }, + encoding: { + resolution: '720*1280', + rate: { + min: 300, + max: 800, + default: 1500, + }, + frameRate: 15, + profile: 'high', + }, + }, + audio: { + mode: '自定义', + acquisition: { + channels: 8, + }, + encoding: { + channels: 8, + rate: 128, + profile: 'ACC-LC', + }, + }, + }) + }) + Mock.mock(new RegExp('/api/operation/log'), () => { + return successResponseWrap([ + { + key: '1', + contentNumber: '视频类001003', + updateContent: '视频参数变更', + status: 0, + updateTime: '2021-02-28 10:30:50', + }, + { + key: '2', + contentNumber: '视频类058212', + updateContent: '视频参数变更;音频参数变更', + status: 1, + updateTime: '2020-05-13 08:00:00', + }, + ]) + }) + }, +}) diff --git a/src/views/redirect/index.vue b/src/views/redirect/index.vue new file mode 100644 index 0000000..e286e7a --- /dev/null +++ b/src/views/redirect/index.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/src/views/user/info/components/latest-activity.vue b/src/views/user/info/components/latest-activity.vue new file mode 100644 index 0000000..3456dd0 --- /dev/null +++ b/src/views/user/info/components/latest-activity.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/views/user/info/components/latest-notification.vue b/src/views/user/info/components/latest-notification.vue new file mode 100644 index 0000000..efa2593 --- /dev/null +++ b/src/views/user/info/components/latest-notification.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/views/user/info/components/my-project.vue b/src/views/user/info/components/my-project.vue new file mode 100644 index 0000000..fa308d7 --- /dev/null +++ b/src/views/user/info/components/my-project.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/views/user/info/components/my-team.vue b/src/views/user/info/components/my-team.vue new file mode 100644 index 0000000..4679f59 --- /dev/null +++ b/src/views/user/info/components/my-team.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/views/user/info/components/user-info-header.vue b/src/views/user/info/components/user-info-header.vue new file mode 100644 index 0000000..022f9e9 --- /dev/null +++ b/src/views/user/info/components/user-info-header.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/views/user/info/index.vue b/src/views/user/info/index.vue new file mode 100644 index 0000000..f7dea77 --- /dev/null +++ b/src/views/user/info/index.vue @@ -0,0 +1,87 @@ + + + + + + + + + diff --git a/src/views/user/info/locale/en-US.ts b/src/views/user/info/locale/en-US.ts new file mode 100644 index 0000000..c83a83e --- /dev/null +++ b/src/views/user/info/locale/en-US.ts @@ -0,0 +1,15 @@ +export default { + 'menu.user.info': 'User Info', + 'userInfo.editUserInfo': 'Edit Info', + 'userInfo.tab.title.overview': 'Overview', + 'userInfo.tab.title.project': 'Project', + 'userInfo.tab.title.team': 'My Team', + 'userInfo.title.latestActivity': 'Latest Activity', + 'userInfo.title.latestNotification': 'In-site Notification', + 'userInfo.title.myProject': 'My Project', + 'userInfo.showMore': 'Show More', + 'userInfo.viewAll': 'View All', + 'userInfo.nodata': 'No Data', + 'userInfo.visits.unit': 'times', + 'userInfo.visits.lastMonth': 'Last Month', +} diff --git a/src/views/user/info/locale/zh-CN.ts b/src/views/user/info/locale/zh-CN.ts new file mode 100644 index 0000000..69b6b4e --- /dev/null +++ b/src/views/user/info/locale/zh-CN.ts @@ -0,0 +1,15 @@ +export default { + 'menu.user.info': '用户信息', + 'userInfo.editUserInfo': '编辑信息', + 'userInfo.tab.title.overview': '总览', + 'userInfo.tab.title.project': '项目', + 'userInfo.tab.title.team': '我的团队', + 'userInfo.title.latestActivity': '最新动态', + 'userInfo.title.latestNotification': '站内通知', + 'userInfo.title.myProject': '我的项目', + 'userInfo.showMore': '查看更多', + 'userInfo.viewAll': '查看全部', + 'userInfo.nodata': '暂无数据', + 'userInfo.visits.unit': '人次', + 'userInfo.visits.lastMonth': '较上月', +} diff --git a/src/views/user/info/mock.ts b/src/views/user/info/mock.ts new file mode 100644 index 0000000..f38e690 --- /dev/null +++ b/src/views/user/info/mock.ts @@ -0,0 +1,152 @@ +import Mock from 'mockjs' +import setupMock, { successResponseWrap } from '@/utils/setup-mock' + +setupMock({ + setup() { + // 最新项目 + Mock.mock(new RegExp('/api/user/my-project/list'), () => { + const contributors = [ + { + name: '秦臻宇', + email: 'qingzhenyu@arco.design', + avatar: '//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a8c8cdb109cb051163646151a4a5083b.png~tplv-uwbnlip3yd-webp.webp', + }, + { + name: '于涛', + email: 'yuebao@arco.design', + avatar: '//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a8c8cdb109cb051163646151a4a5083b.png~tplv-uwbnlip3yd-webp.webp', + }, + { + name: '宁波', + email: 'ningbo@arco.design', + avatar: '//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp', + }, + { + name: '郑曦月', + email: 'zhengxiyue@arco.design', + avatar: '//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/8361eeb82904210b4f55fab888fe8416.png~tplv-uwbnlip3yd-webp.webp', + }, + { + name: '宁波', + email: 'ningbo@arco.design', + avatar: '//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp', + }, + ] + const units = [ + { + name: '企业级产品设计系统', + description: 'System', + }, + { + name: '智能应用', + description: 'The Volcano Engine', + }, + { + name: 'OCR文本识别', + description: 'OCR text recognition', + }, + { + name: '内容资源管理', + description: 'Content resource management ', + }, + { + name: '今日头条内容管理', + description: 'Toutiao content management', + }, + { + name: '智能机器人', + description: 'Intelligent Robot Project', + }, + ] + return successResponseWrap( + new Array(6).fill(null).map((_item, index) => ({ + id: index, + name: units[index].name, + description: units[index].description, + peopleNumber: Mock.Random.natural(10, 1000), + contributors, + })) + ) + }) + + // 最新动态 + Mock.mock(new RegExp('/api/user/latest-activity'), () => { + return successResponseWrap( + new Array(7).fill(null).map((_item, index) => ({ + id: index, + title: '发布了项目', + description: '企业级产品设计系统', + avatar: '//lf1-xgcdn-tos.pstatp.com/obj/vcloud/vadmin/start.8e0e4855ee346a46ccff8ff3e24db27b.png', + })) + ) + }) + + // 访问量 + Mock.mock(new RegExp('/api/user/visits'), () => { + return successResponseWrap([ + { + name: '主页访问量', + visits: 5670, + growth: 206.32, + }, + { + name: '项目访问量', + visits: 5670, + growth: 206.32, + }, + ]) + }) + + // 项目和团队列表 + Mock.mock(new RegExp('/api/user/project-and-team/list'), () => { + return successResponseWrap([ + { + id: 1, + content: '他创建的项目', + }, + { + id: 2, + content: '他参与的项目', + }, + { + id: 3, + content: '他创建的团队', + }, + { + id: 4, + content: '他加入的团队', + }, + ]) + }) + + // 团队列表 + Mock.mock(new RegExp('/api/user/my-team/list'), () => { + return successResponseWrap([ + { + id: 1, + avatar: '//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a8c8cdb109cb051163646151a4a5083b.png~tplv-uwbnlip3yd-webp.webp', + name: '火智能应用团队', + peopleNumber: Mock.Random.natural(10, 100), + }, + { + id: 2, + avatar: '//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp', + name: '企业级产品设计团队', + peopleNumber: Mock.Random.natural(5000, 6000), + }, + { + id: 3, + avatar: '//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp', + name: '前端/UE小分队', + peopleNumber: Mock.Random.natural(10, 5000), + }, + { + id: 4, + avatar: '//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/8361eeb82904210b4f55fab888fe8416.png~tplv-uwbnlip3yd-webp.webp', + name: '内容识别插件小分队', + peopleNumber: Mock.Random.natural(10, 100), + }, + ]) + }) + }, +}) diff --git a/src/views/user/setting/components/basic-information.vue b/src/views/user/setting/components/basic-information.vue new file mode 100644 index 0000000..9f10fdc --- /dev/null +++ b/src/views/user/setting/components/basic-information.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/src/views/user/setting/components/certification-records.vue b/src/views/user/setting/components/certification-records.vue new file mode 100644 index 0000000..25c7397 --- /dev/null +++ b/src/views/user/setting/components/certification-records.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/src/views/user/setting/components/certification.vue b/src/views/user/setting/components/certification.vue new file mode 100644 index 0000000..a2a5732 --- /dev/null +++ b/src/views/user/setting/components/certification.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/views/user/setting/components/enterprise-certification.vue b/src/views/user/setting/components/enterprise-certification.vue new file mode 100644 index 0000000..b59ebc1 --- /dev/null +++ b/src/views/user/setting/components/enterprise-certification.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/src/views/user/setting/components/security-settings.vue b/src/views/user/setting/components/security-settings.vue new file mode 100644 index 0000000..3809cf0 --- /dev/null +++ b/src/views/user/setting/components/security-settings.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/src/views/user/setting/components/user-panel.vue b/src/views/user/setting/components/user-panel.vue new file mode 100644 index 0000000..b468a3a --- /dev/null +++ b/src/views/user/setting/components/user-panel.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/src/views/user/setting/index.vue b/src/views/user/setting/index.vue new file mode 100644 index 0000000..5311dc2 --- /dev/null +++ b/src/views/user/setting/index.vue @@ -0,0 +1,57 @@ + + + + + + + diff --git a/src/views/user/setting/locale/en-US.ts b/src/views/user/setting/locale/en-US.ts new file mode 100644 index 0000000..e22fb14 --- /dev/null +++ b/src/views/user/setting/locale/en-US.ts @@ -0,0 +1,80 @@ +export default { + 'menu.user.setting': 'User Setting', + 'userSetting.menu.title.info': 'Personal Information', + 'userSetting.menu.title.account': 'Account Setting', + 'userSetting.menu.title.password': 'Password', + 'userSetting.menu.title.message': 'Message Notification', + 'userSetting.menu.title.result': 'Result', + 'userSetting.menu.title.data': 'Export Data', + 'userSetting.saveSuccess': 'Save Success', + 'userSetting.title.basicInfo': 'Basic Information', + 'userSetting.title.socialInfo': 'Social Information', + 'userSetting.label.avatar': 'Avatar', + 'userSetting.label.name': 'User Name', + 'userSetting.label.location': 'Office Location', + 'userSetting.label.introduction': 'Introduction', + 'userSetting.label.personalWebsite': 'Website', + 'userSetting.save': 'Save', + 'userSetting.cancel': 'Cancel', + 'userSetting.reset': 'Reset', + // new + 'userSetting.label.certification': 'Certification', + 'userSetting.label.phone': 'Phone', + 'userSetting.label.accountId': 'Account Id', + 'userSetting.label.registrationDate': 'Registration Date', + 'userSetting.tab.basicInformation': 'Basic Information', + 'userSetting.tab.securitySettings': 'Security Settings', + 'userSetting.tab.certification': 'Certification', + 'userSetting.basicInfo.form.label.email': 'Email', + 'userSetting.basicInfo.placeholder.email': `Please enter your email address, such as xxx{'@'}bytedance.com`, + 'userSetting.form.error.email.required': 'Please enter email address', + 'userSetting.basicInfo.form.label.nickname': 'Nickname', + 'userSetting.basicInfo.placeholder.nickname': 'Please enter nickname', + 'userSetting.form.error.nickname.required': 'Please enter nickname', + 'userSetting.basicInfo.form.label.countryRegion': 'Country/region', + 'userSetting.basicInfo.placeholder.countryRegion': 'Please select country/region', + 'userSetting.form.error.countryRegion.required': 'Please select country/region', + 'userSetting.basicInfo.form.label.area': 'Area', + 'userSetting.basicInfo.placeholder.area': 'Please select area', + 'userSetting.form.error.area.required': 'Please Select a area', + 'userSetting.basicInfo.form.label.address': 'Address', + 'userSetting.basicInfo.placeholder.address': 'Please enter address', + 'userSetting.basicInfo.form.label.profile': 'Personal profile', + 'userSetting.basicInfo.placeholder.profile': 'Please enter your profile, no more than 200 words', + 'userSetting.form.error.profile.maxLength': 'No more than 200 words', + 'userSetting.SecuritySettings.form.label.password': 'Login Password', + 'userSetting.SecuritySettings.placeholder.password': + 'Has been set. The password must contain at least six letters, digits, and special characters except Spaces. The password must contain both uppercase and lowercase letters.', + 'userSetting.SecuritySettings.form.label.securityQuestion': 'Security Question', + 'userSetting.SecuritySettings.placeholder.securityQuestion': + 'You have not set the password protection question. The password protection question can effectively protect the account security.', + 'userSetting.SecuritySettings.form.label.phone': 'Phone', + // 'userSetting.SecuritySettings.placeholder.phone': '已绑定:150******50', + 'userSetting.SecuritySettings.form.label.email': 'Email', + 'userSetting.SecuritySettings.placeholder.email': + 'You have not set a mailbox yet. The mailbox binding can be used to retrieve passwords and receive notifications.', + 'userSetting.SecuritySettings.button.settings': 'Settings', + 'userSetting.SecuritySettings.button.update': 'Update', + 'userSetting.certification.title.enterprise': 'Enterprise Real Name Authentication', + 'userSetting.certification.extra.enterprise': 'Modifying an Authentication Body', + 'userSetting.certification.label.accountType': 'Account Type', + 'userSetting.certification.label.status': 'status', + 'userSetting.certification.label.time': 'time', + 'userSetting.certification.label.legalPerson': 'Legal Person Name', + 'userSetting.certification.label.certificateType': 'Types of legal person documents', + 'userSetting.certification.label.authenticationNumber': 'Legal person certification number', + 'userSetting.certification.label.enterpriseName': 'Enterprise Name', + 'userSetting.certification.label.enterpriseCertificateType': 'Types of corporate certificates', + 'userSetting.certification.label.organizationCode': 'Organization Code', + 'userSetting.certification.title.record': 'Certification Records', + 'userSetting.certification.columns.certificationType': 'Certification Type', + 'userSetting.certification.cell.certificationType': 'Enterprise certificate Certification', + 'userSetting.certification.columns.certificationContent': 'Certification Content', + 'userSetting.certification.columns.status': 'Status', + 'userSetting.certification.cell.pass': 'Pass', + 'userSetting.certification.cell.auditing': 'Auditing', + 'userSetting.certification.columns.time': 'Time', + 'userSetting.certification.columns.operation': 'Operation', + 'userSetting.certification.button.check': 'Check', + 'userSetting.certification.button.withdraw': 'Withdraw', +} diff --git a/src/views/user/setting/locale/zh-CN.ts b/src/views/user/setting/locale/zh-CN.ts new file mode 100644 index 0000000..354715e --- /dev/null +++ b/src/views/user/setting/locale/zh-CN.ts @@ -0,0 +1,78 @@ +export default { + 'menu.user.setting': '用户设置', + 'userSetting.menu.title.info': '个人信息', + 'userSetting.menu.title.account': '账号设置', + 'userSetting.menu.title.password': '密码', + 'userSetting.menu.title.message': '消息通知', + 'userSetting.menu.title.result': '结果页', + 'userSetting.menu.title.data': '导出数据', + 'userSetting.saveSuccess': '保存成功', + 'userSetting.title.basicInfo': '基本信息', + 'userSetting.title.socialInfo': '社交信息', + 'userSetting.label.avatar': '头像', + 'userSetting.label.name': '用户名', + 'userSetting.label.location': '办公地点', + 'userSetting.label.introduction': '个人简介', + 'userSetting.label.personalWebsite': '个人网站', + 'userSetting.save': '保存', + 'userSetting.cancel': '取消', + 'userSetting.reset': '重置', + // new + 'userSetting.label.certification': '实名认证', + 'userSetting.label.phone': '手机号码', + 'userSetting.label.accountId': '账号ID', + 'userSetting.label.registrationDate': '注册时间', + 'userSetting.tab.basicInformation': '基础信息', + 'userSetting.tab.securitySettings': '安全设置', + 'userSetting.tab.certification': '实名认证', + 'userSetting.basicInfo.form.label.email': '邮箱', + 'userSetting.basicInfo.placeholder.email': `请输入邮箱地址,如xxx{'@'}bytedance.com`, + 'userSetting.form.error.email.required': '请输入邮箱', + 'userSetting.basicInfo.form.label.nickname': '昵称', + 'userSetting.basicInfo.placeholder.nickname': '请输入您的昵称', + 'userSetting.form.error.nickname.required': '请输入昵称', + 'userSetting.basicInfo.form.label.countryRegion': '国家/地区', + 'userSetting.basicInfo.placeholder.countryRegion': '请选择', + 'userSetting.form.error.countryRegion.required': '请选择国家/地区', + 'userSetting.basicInfo.form.label.area': '所在区域', + 'userSetting.basicInfo.placeholder.area': '请选择', + 'userSetting.form.error.area.required': '请选择所在区域', + 'userSetting.basicInfo.form.label.address': '具体地址', + 'userSetting.basicInfo.placeholder.address': '请输入您的地址', + 'userSetting.basicInfo.form.label.profile': '个人简介', + 'userSetting.basicInfo.placeholder.profile': '请输入您的个人简介,最多不超过200字。', + 'userSetting.form.error.profile.maxLength': '最多不超过200字', + 'userSetting.SecuritySettings.form.label.password': '登录密码', + 'userSetting.SecuritySettings.placeholder.password': + '已设置。密码至少6位字符,支持数字、字母和除空格外的特殊字符,且必须同时包含数字和大小写字母。', + 'userSetting.SecuritySettings.form.label.securityQuestion': '密保问题', + 'userSetting.SecuritySettings.placeholder.securityQuestion': '您暂未设置密保问题,密保问题可以有效的保护账号的安全。', + 'userSetting.SecuritySettings.form.label.phone': '安全手机', + // 'userSetting.SecuritySettings.placeholder.phone': '已绑定:150******50', + 'userSetting.SecuritySettings.form.label.email': '安全邮箱', + 'userSetting.SecuritySettings.placeholder.email': '您暂未设置邮箱,绑定邮箱可以用来找回密码、接收通知等。', + 'userSetting.SecuritySettings.button.settings': '设置', + 'userSetting.SecuritySettings.button.update': '修改', + 'userSetting.certification.title.enterprise': '企业实名认证', + 'userSetting.certification.extra.enterprise': '修改认证主体', + 'userSetting.certification.label.accountType': '账号类型', + 'userSetting.certification.label.status': '认证状态', + 'userSetting.certification.label.time': '认证时间', + 'userSetting.certification.label.legalPerson': '法人姓名', + 'userSetting.certification.label.certificateType': '法人证件类型', + 'userSetting.certification.label.authenticationNumber': '法人认证号码', + 'userSetting.certification.label.enterpriseName': '企业名称', + 'userSetting.certification.label.enterpriseCertificateType': '企业证件类型', + 'userSetting.certification.label.organizationCode': '组织机构代码', + 'userSetting.certification.title.record': '认证记录', + 'userSetting.certification.columns.certificationType': '认证类型', + 'userSetting.certification.cell.certificationType': '企业证件认证', + 'userSetting.certification.columns.certificationContent': '认证内容', + 'userSetting.certification.columns.status': '当前状态', + 'userSetting.certification.cell.pass': '已通过', + 'userSetting.certification.cell.auditing': '审核中', + 'userSetting.certification.columns.time': '创建时间', + 'userSetting.certification.columns.operation': '操作', + 'userSetting.certification.button.check': '查看', + 'userSetting.certification.button.withdraw': '撤回', +} diff --git a/src/views/user/setting/mock.ts b/src/views/user/setting/mock.ts new file mode 100644 index 0000000..325ce47 --- /dev/null +++ b/src/views/user/setting/mock.ts @@ -0,0 +1,42 @@ +import Mock from 'mockjs' +import setupMock, { successResponseWrap } from '@/utils/setup-mock' + +setupMock({ + setup() { + Mock.mock(new RegExp('/api/user/save-info'), () => { + return successResponseWrap('ok') + }) + Mock.mock(new RegExp('/api/user/certification'), () => { + return successResponseWrap({ + enterpriseInfo: { + accountType: '企业账号', + status: 0, + time: '2018-10-22 14:53:12', + legalPerson: '李**', + certificateType: '中国身份证', + authenticationNumber: '130************123', + enterpriseName: '低调有实力的企业', + enterpriseCertificateType: '企业营业执照', + organizationCode: '7*******9', + }, + record: [ + { + certificationType: 1, + certificationContent: '企业实名认证,法人姓名:李**', + status: 0, + time: '2021-02-28 10:30:50', + }, + { + certificationType: 1, + certificationContent: '企业实名认证,法人姓名:李**', + status: 1, + time: '2020-05-13 08:00:00', + }, + ], + }) + }) + Mock.mock(new RegExp('/api/user/upload'), () => { + return successResponseWrap('ok') + }) + }, +}) diff --git a/src/views/visualization/data-analysis/components/chain-item.vue b/src/views/visualization/data-analysis/components/chain-item.vue new file mode 100644 index 0000000..2e3eeca --- /dev/null +++ b/src/views/visualization/data-analysis/components/chain-item.vue @@ -0,0 +1,280 @@ + + + + + diff --git a/src/views/visualization/data-analysis/components/content-period-analysis.vue b/src/views/visualization/data-analysis/components/content-period-analysis.vue new file mode 100644 index 0000000..97a6804 --- /dev/null +++ b/src/views/visualization/data-analysis/components/content-period-analysis.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/src/views/visualization/data-analysis/components/content-publish-ratio.vue b/src/views/visualization/data-analysis/components/content-publish-ratio.vue new file mode 100644 index 0000000..9be817f --- /dev/null +++ b/src/views/visualization/data-analysis/components/content-publish-ratio.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/src/views/visualization/data-analysis/components/popular-author.vue b/src/views/visualization/data-analysis/components/popular-author.vue new file mode 100644 index 0000000..d2afd24 --- /dev/null +++ b/src/views/visualization/data-analysis/components/popular-author.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/src/views/visualization/data-analysis/components/public-opinion.vue b/src/views/visualization/data-analysis/components/public-opinion.vue new file mode 100644 index 0000000..0468114 --- /dev/null +++ b/src/views/visualization/data-analysis/components/public-opinion.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/views/visualization/data-analysis/index.vue b/src/views/visualization/data-analysis/index.vue new file mode 100644 index 0000000..a2652df --- /dev/null +++ b/src/views/visualization/data-analysis/index.vue @@ -0,0 +1,59 @@ + + + + + + + diff --git a/src/views/visualization/data-analysis/locale/en-US.ts b/src/views/visualization/data-analysis/locale/en-US.ts new file mode 100644 index 0000000..b6e17a7 --- /dev/null +++ b/src/views/visualization/data-analysis/locale/en-US.ts @@ -0,0 +1,16 @@ +export default { + 'menu.visualization.dataAnalysis': 'Analysis', + 'dataAnalysis.title.publicOpinion': 'Public Opinion Analysis', + 'dataAnalysis.card.title.allVisitors': 'All Visitors', + 'dataAnalysis.card.title.contentPublished': 'Content Published', + 'dataAnalysis.card.title.totalComment': 'Total Comment', + 'dataAnalysis.card.title.totalShare': 'Total Share', + 'dataAnalysis.card.yesterday': 'Yesterday', + 'dataAnalysis.contentPublishRatio': 'Content Publishing Ratio', + 'dataAnalysis.popularAuthor': 'Popular Author', + 'dataAnalysis.popularAuthor.column.ranking': 'ranking', + 'dataAnalysis.popularAuthor.column.author': 'author', + 'dataAnalysis.popularAuthor.column.content': 'Content Number', + 'dataAnalysis.popularAuthor.column.click': 'Click Number', + 'dataAnalysis.contentPeriodAnalysis': 'Content Period Analysis', +} diff --git a/src/views/visualization/data-analysis/locale/zh-CN.ts b/src/views/visualization/data-analysis/locale/zh-CN.ts new file mode 100644 index 0000000..e16e4df --- /dev/null +++ b/src/views/visualization/data-analysis/locale/zh-CN.ts @@ -0,0 +1,16 @@ +export default { + 'menu.visualization.dataAnalysis': '分析页', + 'dataAnalysis.title.publicOpinion': '舆情分析', + 'dataAnalysis.card.title.allVisitors': '访问总人次', + 'dataAnalysis.card.title.contentPublished': '内容发布量', + 'dataAnalysis.card.title.totalComment': '评论总量', + 'dataAnalysis.card.title.totalShare': '分享总量', + 'dataAnalysis.card.yesterday': '较昨日', + 'dataAnalysis.contentPublishRatio': '内容发布比例', + 'dataAnalysis.popularAuthor': '热门作者榜单', + 'dataAnalysis.popularAuthor.column.ranking': '排名', + 'dataAnalysis.popularAuthor.column.author': '作者', + 'dataAnalysis.popularAuthor.column.content': '内容量', + 'dataAnalysis.popularAuthor.column.click': '点击量', + 'dataAnalysis.contentPeriodAnalysis': '内容时段分析', +} diff --git a/src/views/visualization/data-analysis/mock.ts b/src/views/visualization/data-analysis/mock.ts new file mode 100644 index 0000000..626514e --- /dev/null +++ b/src/views/visualization/data-analysis/mock.ts @@ -0,0 +1,97 @@ +import Mock from 'mockjs' +import setupMock, { successResponseWrap } from '@/utils/setup-mock' +import { PostData } from '@/types/global' + +setupMock({ + setup() { + Mock.mock(new RegExp('/api/public-opinion-analysis'), (params: PostData) => { + const { quota = 'visitors' } = JSON.parse(params.body) + if (['visitors', 'comment'].includes(quota)) { + const year = new Date().getFullYear() + const getLineData = (name: number) => { + return new Array(12).fill(0).map((_item, index) => ({ + x: `${index + 1}月`, + y: Mock.Random.natural(0, 100), + name: String(name), + })) + } + return successResponseWrap({ + count: 5670, + growth: 206.32, + chartData: [...getLineData(year), ...getLineData(year - 1)], + }) + } + if (['published'].includes(quota)) { + const year = new Date().getFullYear() + const getLineData = (name: number) => { + return new Array(12).fill(0).map((_item, index) => ({ + x: `${index + 1}日`, + y: Mock.Random.natural(20, 100), + name: String(name), + })) + } + return successResponseWrap({ + count: 5670, + growth: 206.32, + chartData: [...getLineData(year)], + }) + } + return successResponseWrap({ + count: 5670, + growth: 206.32, + chartData: [ + // itemStyle for demo + { name: '文本类', value: 25, itemStyle: { color: '#8D4EDA' } }, + { name: '图文类', value: 35, itemStyle: { color: '#165DFF' } }, + { name: '视频类', value: 40, itemStyle: { color: '#00B2FF' } }, + ], + }) + }) + + Mock.mock(new RegExp('/api/content-period-analysis'), () => { + const getLineData = (name: string) => { + return { + name, + value: new Array(12).fill(0).map(() => Mock.Random.natural(30, 90)), + } + } + return successResponseWrap({ + xAxis: new Array(12).fill(0).map((_item, index) => `${index * 2}:00`), + data: [getLineData('纯文本'), getLineData('图文类'), getLineData('视频类')], + }) + }) + + Mock.mock(new RegExp('/api/content-publish'), () => { + const generateLineData = (name: string) => { + const result = { + name, + x: [] as string[], + y: [] as number[], + } + new Array(12).fill(0).forEach((_item, index) => { + result.x.push(`${index * 2}:00`) + result.y.push(Mock.Random.natural(1000, 3000)) + }) + return result + } + return successResponseWrap([generateLineData('纯文本'), generateLineData('图文类'), generateLineData('视频类')]) + }) + + Mock.mock(new RegExp('/api/popular-author/list'), () => { + const generateData = () => { + const list = new Array(7).fill(0).map((_item, index) => ({ + ranking: index + 1, + author: Mock.mock('@ctitle(5)'), + contentCount: Mock.mock(/[0-9]{4}/), + clickCount: Mock.mock(/[0-9]{4}/), + })) + return { + list, + } + } + return successResponseWrap({ + ...generateData(), + }) + }) + }, +}) diff --git a/src/views/visualization/multi-dimension-data-analysis/components/chain-item.vue b/src/views/visualization/multi-dimension-data-analysis/components/chain-item.vue new file mode 100644 index 0000000..ae74f78 --- /dev/null +++ b/src/views/visualization/multi-dimension-data-analysis/components/chain-item.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/src/views/visualization/multi-dimension-data-analysis/components/content-publishing-source.vue b/src/views/visualization/multi-dimension-data-analysis/components/content-publishing-source.vue new file mode 100644 index 0000000..4a24cf3 --- /dev/null +++ b/src/views/visualization/multi-dimension-data-analysis/components/content-publishing-source.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/src/views/visualization/multi-dimension-data-analysis/components/content-type-distribution.vue b/src/views/visualization/multi-dimension-data-analysis/components/content-type-distribution.vue new file mode 100644 index 0000000..6e09ba1 --- /dev/null +++ b/src/views/visualization/multi-dimension-data-analysis/components/content-type-distribution.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/src/views/visualization/multi-dimension-data-analysis/components/data-chain-growth.vue b/src/views/visualization/multi-dimension-data-analysis/components/data-chain-growth.vue new file mode 100644 index 0000000..74de777 --- /dev/null +++ b/src/views/visualization/multi-dimension-data-analysis/components/data-chain-growth.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/views/visualization/multi-dimension-data-analysis/components/data-overview.vue b/src/views/visualization/multi-dimension-data-analysis/components/data-overview.vue new file mode 100644 index 0000000..98d0b4d --- /dev/null +++ b/src/views/visualization/multi-dimension-data-analysis/components/data-overview.vue @@ -0,0 +1,268 @@ + + + + + diff --git a/src/views/visualization/multi-dimension-data-analysis/components/user-actions.vue b/src/views/visualization/multi-dimension-data-analysis/components/user-actions.vue new file mode 100644 index 0000000..98a9a0c --- /dev/null +++ b/src/views/visualization/multi-dimension-data-analysis/components/user-actions.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/src/views/visualization/multi-dimension-data-analysis/index.vue b/src/views/visualization/multi-dimension-data-analysis/index.vue new file mode 100644 index 0000000..4765ddc --- /dev/null +++ b/src/views/visualization/multi-dimension-data-analysis/index.vue @@ -0,0 +1,48 @@ + + + + + + + diff --git a/src/views/visualization/multi-dimension-data-analysis/locale/en-US.ts b/src/views/visualization/multi-dimension-data-analysis/locale/en-US.ts new file mode 100644 index 0000000..3d36f9a --- /dev/null +++ b/src/views/visualization/multi-dimension-data-analysis/locale/en-US.ts @@ -0,0 +1,15 @@ +export default { + 'menu.visualization.multiDimensionDataAnalysis': 'Multi-D Analysis', + 'multiDAnalysis.card.title.dataOverview': 'Overview', + 'multiDAnalysis.dataOverview.contentProduction': 'Content Production', + 'multiDAnalysis.dataOverview.contentClick': 'Content Click', + 'multiDAnalysis.dataOverview.contentExposure': 'Content Exposure', + 'multiDAnalysis.dataOverview.activeUsers': 'Active Users', + 'multiDAnalysis.card.title.userActions': 'User Actions', + 'multiDAnalysis.card.title.contentTypeDistribution': 'Content Type Distribution', + 'multiDAnalysis.card.title.retentionTrends': 'Retention Trends', + 'multiDAnalysis.card.title.userRetention': 'User Retention', + 'multiDAnalysis.card.title.contentConsumptionTrends': 'Content Consumption Trends', + 'multiDAnalysis.card.title.contentConsumption': 'Content Consumption', + 'multiDAnalysis.card.title.contentPublishingSource': 'Content Publishing Source', +} diff --git a/src/views/visualization/multi-dimension-data-analysis/locale/zh-CN.ts b/src/views/visualization/multi-dimension-data-analysis/locale/zh-CN.ts new file mode 100644 index 0000000..6d572ae --- /dev/null +++ b/src/views/visualization/multi-dimension-data-analysis/locale/zh-CN.ts @@ -0,0 +1,15 @@ +export default { + 'menu.visualization.multiDimensionDataAnalysis': '多维数据分析', + 'multiDAnalysis.card.title.dataOverview': '数据总览', + 'multiDAnalysis.dataOverview.contentProduction': '内容生产量', + 'multiDAnalysis.dataOverview.contentClick': '内容点击量', + 'multiDAnalysis.dataOverview.contentExposure': '内容曝光量', + 'multiDAnalysis.dataOverview.activeUsers': '活跃用户数', + 'multiDAnalysis.card.title.userActions': '今日转评赞统计', + 'multiDAnalysis.card.title.contentTypeDistribution': '内容题材分布', + 'multiDAnalysis.card.title.retentionTrends': '用户留存趋势', + 'multiDAnalysis.card.title.userRetention': '用户留存量', + 'multiDAnalysis.card.title.contentConsumptionTrends': '内容消费趋势', + 'multiDAnalysis.card.title.contentConsumption': '内容消费量', + 'multiDAnalysis.card.title.contentPublishingSource': '内容发布来源', +} diff --git a/src/views/visualization/multi-dimension-data-analysis/mock.ts b/src/views/visualization/multi-dimension-data-analysis/mock.ts new file mode 100644 index 0000000..2f4f48e --- /dev/null +++ b/src/views/visualization/multi-dimension-data-analysis/mock.ts @@ -0,0 +1,47 @@ +import Mock from 'mockjs' +import setupMock, { successResponseWrap } from '@/utils/setup-mock' +import { PostData } from '@/types/global' + +setupMock({ + setup() { + Mock.mock(new RegExp('/api/data-chain-growth'), (params: PostData) => { + const { quota } = JSON.parse(params.body) + const getLineData = () => { + return { + xAxis: new Array(12).fill(0).map((_item, index) => `${index + 1}日`), + data: { + name: quota, + value: new Array(12).fill(0).map(() => Mock.Random.natural(1000, 3000)), + }, + } + } + return successResponseWrap({ + count: Mock.Random.natural(1000, 3000), + growth: Mock.Random.float(20, 100, 2, 2), + chartData: getLineData(), + }) + }) + // v2 + Mock.mock(new RegExp('/api/data-overview'), () => { + const generateLineData = (name: string) => { + return { + name, + count: Mock.Random.natural(20, 2000), + value: new Array(8).fill(0).map(() => Mock.Random.natural(800, 4000)), + } + } + const xAxis = new Array(8).fill(0).map((_item, index) => { + return `12.1${index}` + }) + return successResponseWrap({ + xAxis, + data: [ + generateLineData('内容生产量'), + generateLineData('内容点击量'), + generateLineData('内容曝光量'), + generateLineData('活跃用户数'), + ], + }) + }) + }, +}) diff --git a/stylelint.config.mjs b/stylelint.config.mjs new file mode 100644 index 0000000..afced8c --- /dev/null +++ b/stylelint.config.mjs @@ -0,0 +1,14 @@ +export default { + extends: ['stylelint-config-recommended-scss', 'stylelint-config-recommended-vue', 'stylelint-config-recess-order'], + rules: { + 'no-empty-source': null, + 'at-rule-no-unknown': null, + 'property-no-unknown': null, + 'function-no-unknown': null, + 'selector-class-pattern': null, + 'no-descending-specificity': null, + 'scss/no-global-function-names': null, + 'selector-pseudo-class-no-unknown': null, + }, + ignoreFiles: ['dist/**/*', 'index.html'], +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..fecc95b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "ES2020", + "moduleResolution": "node", + "strict": true, + "jsx": "preserve", + "allowJs": true, + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + }, + "lib": ["es2020", "dom"] + }, + "include": ["src/**/*", "src/**/*.vue", "src/types/vue-i18n.d.ts"] +}