From d97abe36f29b83381aa4696313a92e73dbaa25e3 Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Sat, 24 Aug 2024 17:00:34 +0200 Subject: [PATCH] Deploy website - based on a25745c587fd3103bdf3071eaec024be5294e740 --- .dockerignore | 8 - .github/FUNDING.yml | 2 - .github/ISSUE_TEMPLATE/bug.yml | 45 - .github/ISSUE_TEMPLATE/config.yml | 5 - .github/ISSUE_TEMPLATE/feature.yml | 29 - .github/ISSUE_TEMPLATE/language-request.yml | 19 - .github/workflows/backend-system-tests.yml | 22 - .github/workflows/build-docker-image.yml | 34 - .gitignore | 43 - .nojekyll | 0 404.html | 13 + CHANGELOG.md | 758 - CONTRIBUTING.md | 95 - Caddyfile | 15 - Dockerfile | 58 - How to/contribute/index.html | 84 + How to/translate/index.html | 17 + LICENSE | 25 - README.md | 174 - SECURITY.md | 7 - assets/css/styles.2478c382.css | 1 + assets/js/0e384e19.faa15ffa.js | 1 + assets/js/17896441.5e15038e.js | 1 + assets/js/1df93b7f.414879d5.js | 1 + assets/js/237.f947e7e3.js | 1 + assets/js/3205bd6d.86b778bb.js | 1 + assets/js/36493d4b.b0bd8bf4.js | 1 + assets/js/3f2e6990.91d251d4.js | 1 + assets/js/5e95c892.59168106.js | 1 + assets/js/7cbc9cee.324e9707.js | 1 + assets/js/a0d20388.cc3ff9b4.js | 1 + assets/js/a7456010.91f0b3e9.js | 1 + assets/js/a7bd4aaa.96f06b44.js | 1 + assets/js/a8c31fc1.34ec6f0d.js | 1 + assets/js/a94703ab.eb98faa6.js | 1 + assets/js/aba21aa0.ad2b3c84.js | 1 + assets/js/d131c913.b751eb49.js | 1 + assets/js/ffb3bb1a.e6fb6a6c.js | 1 + assets/js/main.876bc575.js | 2 + assets/js/main.876bc575.js.LICENSE.txt | 64 + assets/js/runtime~main.40a3a5be.js | 1 + backend/.eslintrc.json | 6 - backend/.prettierignore | 1 - backend/nest-cli.json | 8 - backend/package-lock.json | 8834 -------- backend/package.json | 87 - backend/prisma/.env | 2 - .../20221011172612_init/migration.sql | 57 - .../migration.sql | 14 - .../migration.sql | 17 - .../migration.sql | 25 - .../migration.sql | 37 - .../20221208191607_v0_3_3/migration.sql | 17 - .../20221213173854_v0_3_6/migration.sql | 2 - .../20221219061131_user_entity/migration.sql | 31 - .../migration.sql | 56 - .../20230104145733_v0_5_1/migration.sql | 21 - .../migration.sql | 2 - .../migration.sql | 67 - .../20230209205230_v0_10_0/migration.sql | 64 - .../20230303091601_v0_11_0/migration.sql | 94 - .../20230319120712_edited_value/migration.sql | 23 - .../migration.sql | 27 - .../20231021165436_oauth/migration.sql | 31 - .../migration.sql | 2 - .../migration.sql | 20 - .../migration.sql | 22 - .../20240803232708_ldap_support/migration.sql | 11 - backend/prisma/migrations/migration_lock.toml | 3 - backend/prisma/schema.prisma | 160 - backend/prisma/seed/config.seed.ts | 395 - backend/src/app.controller.ts | 19 - backend/src/app.module.ts | 53 - backend/src/auth/auth.controller.ts | 202 - backend/src/auth/auth.module.ts | 23 - backend/src/auth/auth.service.ts | 296 - backend/src/auth/authTotp.service.ts | 170 - .../src/auth/decorator/getUser.decorator.ts | 9 - backend/src/auth/dto/authRegister.dto.ts | 8 - backend/src/auth/dto/authSignIn.dto.ts | 13 - backend/src/auth/dto/authSignInTotp.dto.ts | 10 - backend/src/auth/dto/enableTotp.dto.ts | 4 - backend/src/auth/dto/resetPassword.dto.ts | 8 - backend/src/auth/dto/token.dto.ts | 15 - backend/src/auth/dto/updatePassword.dto.ts | 9 - backend/src/auth/dto/verifyTotp.dto.ts | 8 - backend/src/auth/guard/isAdmin.guard.ts | 13 - backend/src/auth/guard/jwt.guard.ts | 17 - backend/src/auth/ldap.service.ts | 154 - backend/src/auth/strategy/jwt.strategy.ts | 33 - backend/src/clamscan/clamscan.module.ts | 10 - backend/src/clamscan/clamscan.service.ts | 88 - backend/src/config/config.controller.ts | 75 - backend/src/config/config.module.ts | 25 - backend/src/config/config.service.ts | 119 - backend/src/config/dto/adminConfig.dto.ts | 31 - backend/src/config/dto/config.dto.ts | 18 - backend/src/config/dto/testEmail.dto.ts | 7 - backend/src/config/dto/updateConfig.dto.ts | 11 - backend/src/config/logo.service.ts | 33 - backend/src/constants.ts | 9 - backend/src/email/email.module.ts | 8 - backend/src/email/email.service.ts | 138 - backend/src/file/dto/file.dto.ts | 19 - backend/src/file/file.controller.ts | 99 - backend/src/file/file.module.ts | 14 - backend/src/file/file.service.ts | 149 - backend/src/file/guard/fileSecurity.guard.ts | 67 - backend/src/jobs/jobs.module.ts | 10 - backend/src/jobs/jobs.service.ts | 141 - backend/src/main.ts | 56 - backend/src/oauth/dto/oauthCallback.dto.ts | 9 - backend/src/oauth/dto/oauthSignIn.dto.ts | 7 - .../oauth/exceptions/errorPage.exception.ts | 15 - .../oauth/filter/errorPageException.filter.ts | 39 - .../src/oauth/filter/oauthException.filter.ts | 38 - backend/src/oauth/guard/oauth.guard.ts | 12 - backend/src/oauth/guard/provider.guard.ts | 24 - backend/src/oauth/oauth.controller.ts | 110 - backend/src/oauth/oauth.module.ts | 56 - backend/src/oauth/oauth.service.ts | 193 - .../src/oauth/provider/discord.provider.ts | 135 - .../oauth/provider/genericOidc.provider.ts | 281 - backend/src/oauth/provider/github.provider.ts | 111 - backend/src/oauth/provider/google.provider.ts | 21 - .../src/oauth/provider/microsoft.provider.ts | 29 - .../oauth/provider/oauthProvider.interface.ts | 24 - backend/src/oauth/provider/oidc.provider.ts | 48 - backend/src/prisma/prisma.module.ts | 6 - backend/src/prisma/prisma.service.ts | 17 - .../dto/createReverseShare.dto.ts | 22 - .../src/reverseShare/dto/reverseShare.dto.ts | 24 - .../dto/reverseShareTokenWithShares.ts | 29 - .../guards/reverseShareOwner.guard.ts | 22 - .../reverseShare/reverseShare.controller.ts | 69 - .../src/reverseShare/reverseShare.module.ts | 12 - .../src/reverseShare/reverseShare.service.ts | 111 - backend/src/share/dto/adminShare.dto.ts | 27 - backend/src/share/dto/createShare.dto.ts | 38 - backend/src/share/dto/myShare.dto.ts | 33 - backend/src/share/dto/share.dto.ts | 41 - backend/src/share/dto/shareComplete.dto.ts | 19 - backend/src/share/dto/shareMetaData.dto.ts | 15 - backend/src/share/dto/sharePassword.dto.ts | 7 - backend/src/share/dto/shareSecurity.dto.ts | 12 - backend/src/share/guard/createShare.guard.ts | 28 - backend/src/share/guard/shareOwner.guard.ts | 53 - .../src/share/guard/shareSecurity.guard.ts | 79 - .../share/guard/shareTokenSecurity.guard.ts | 38 - backend/src/share/share.controller.ts | 172 - backend/src/share/share.module.ts | 22 - backend/src/share/share.service.ts | 375 - backend/src/user/dto/createUser.dto.ts | 18 - backend/src/user/dto/publicUser.dto.ts | 4 - backend/src/user/dto/updateOwnUser.dto.ts | 6 - backend/src/user/dto/updateUser.dto.ts | 4 - backend/src/user/dto/user.dto.ts | 45 - backend/src/user/user.controller.ts | 85 - backend/src/user/user.module.ts | 13 - backend/src/user/user.service.ts | 131 - backend/src/utils/date.util.ts | 12 - backend/test/newman-system-tests.json | 1265 -- backend/tsconfig.build.json | 4 - backend/tsconfig.json | 24 - crowdin.yml | 4 - docker-compose-dev.yml | 6 - docker-compose.yml | 18 - docs/CONTRIBUTING.es.md | 95 - docs/CONTRIBUTING.zh-cn.md | 97 - docs/README.es.md | 129 - docs/README.ja-jp.md | 158 - docs/README.zh-cn.md | 126 - docs/oauth2-guide.md | 157 - frontend/.eslintrc.json | 17 - frontend/.prettierignore | 1 - frontend/next-env.d.ts | 5 - frontend/next.config.js | 24 - frontend/package-lock.json | 16678 ---------------- frontend/package.json | 54 - frontend/public/img/favicon.ico | Bin 115069 -> 0 bytes frontend/public/img/icons/icon-128x128.png | Bin 3543 -> 0 bytes frontend/public/img/icons/icon-144x144.png | Bin 4227 -> 0 bytes frontend/public/img/icons/icon-152x152.png | Bin 4674 -> 0 bytes frontend/public/img/icons/icon-192x192.png | Bin 6729 -> 0 bytes frontend/public/img/icons/icon-384x384.png | Bin 13347 -> 0 bytes frontend/public/img/icons/icon-48x48.png | Bin 944 -> 0 bytes frontend/public/img/icons/icon-512x512.png | Bin 29565 -> 0 bytes frontend/public/img/icons/icon-72x72.png | Bin 1551 -> 0 bytes frontend/public/img/icons/icon-96x96.png | Bin 2338 -> 0 bytes frontend/public/img/logo.png | Bin 87662 -> 0 bytes frontend/public/manifest.json | 66 - frontend/src/components/Logo.tsx | 4 - frontend/src/components/Meta.tsx | 31 - .../src/components/account/LanguagePicker.tsx | 36 - .../src/components/account/ThemeSwitcher.tsx | 72 - .../account/showEnableTotpModal.tsx | 140 - .../account/showReverseShareLinkModal.tsx | 22 - .../account/showShareInformationsModal.tsx | 101 - .../components/account/showShareLinkModal.tsx | 22 - .../admin/configuration/AdminConfigInput.tsx | 88 - .../configuration/ConfigurationHeader.tsx | 55 - .../configuration/ConfigurationNavBar.tsx | 111 - .../admin/configuration/LogoConfigInput.tsx | 44 - .../admin/configuration/TestEmailButton.tsx | 73 - .../admin/shares/ManageShareTable.tsx | 149 - .../admin/users/ManageUserTable.tsx | 100 - .../admin/users/showCreateUserModal.tsx | 127 - .../admin/users/showUpdateUserModal.tsx | 146 - frontend/src/components/auth/SignInForm.tsx | 206 - frontend/src/components/auth/SignUpForm.tsx | 108 - frontend/src/components/auth/TotpForm.tsx | 85 - frontend/src/components/core/CenterLoader.tsx | 13 - frontend/src/components/core/SortIcon.tsx | 41 - .../src/components/header/ActionAvatar.tsx | 45 - frontend/src/components/header/Header.tsx | 221 - .../src/components/header/NavbarShareMenu.tsx | 30 - .../components/share/DownloadAllButton.tsx | 57 - frontend/src/components/share/FileList.tsx | 171 - frontend/src/components/share/FilePreview.tsx | 183 - .../src/components/share/FileSizeInput.tsx | 64 - .../modals/showCompletedReverseShareModal.tsx | 48 - .../modals/showCreateReverseShareModal.tsx | 253 - .../share/modals/showFilePreviewModal.tsx | 21 - .../share/showEnterPasswordModal.tsx | 61 - .../src/components/share/showErrorModal.tsx | 53 - .../src/components/upload/CopyTextField.tsx | 75 - frontend/src/components/upload/Dropzone.tsx | 108 - .../src/components/upload/EditableUpload.tsx | 229 - frontend/src/components/upload/FileList.tsx | 124 - .../upload/UploadProgressIndicator.tsx | 19 - .../modals/showCompletedUploadModal.tsx | 77 - .../upload/modals/showCreateUploadModal.tsx | 559 - frontend/src/hooks/config.hook.ts | 18 - frontend/src/hooks/useTranslate.hook.ts | 39 - frontend/src/hooks/user.hook.ts | 13 - frontend/src/i18n/locales.ts | 147 - frontend/src/i18n/translations/ar-EG.ts | 449 - frontend/src/i18n/translations/da-DK.ts | 449 - frontend/src/i18n/translations/de-DE.ts | 449 - frontend/src/i18n/translations/el-GR.ts | 449 - frontend/src/i18n/translations/en-US.ts | 646 - frontend/src/i18n/translations/es-ES.ts | 449 - frontend/src/i18n/translations/fi-FI.ts | 449 - frontend/src/i18n/translations/fr-FR.ts | 449 - frontend/src/i18n/translations/hu-HU.ts | 449 - frontend/src/i18n/translations/it-IT.ts | 449 - frontend/src/i18n/translations/ja-JP.ts | 449 - frontend/src/i18n/translations/ko-KR.ts | 449 - frontend/src/i18n/translations/nl-BE.ts | 449 - frontend/src/i18n/translations/pl-PL.ts | 449 - frontend/src/i18n/translations/pt-BR.ts | 449 - frontend/src/i18n/translations/ru-RU.ts | 449 - frontend/src/i18n/translations/sl-SI.ts | 449 - frontend/src/i18n/translations/sr-SP.ts | 449 - frontend/src/i18n/translations/sv-SE.ts | 449 - frontend/src/i18n/translations/th-TH.ts | 449 - frontend/src/i18n/translations/tr-TR.ts | 449 - frontend/src/i18n/translations/uk-UA.ts | 449 - frontend/src/i18n/translations/zh-CN.ts | 458 - frontend/src/i18n/translations/zh-TW.ts | 449 - frontend/src/middleware.ts | 114 - frontend/src/pages/404.tsx | 46 - frontend/src/pages/_app.tsx | 193 - frontend/src/pages/_document.tsx | 27 - frontend/src/pages/account/index.tsx | 425 - frontend/src/pages/account/reverseShares.tsx | 262 - frontend/src/pages/account/shares.tsx | 184 - .../src/pages/admin/config/[category].tsx | 199 - frontend/src/pages/admin/index.tsx | 110 - frontend/src/pages/admin/intro.tsx | 59 - frontend/src/pages/admin/shares.tsx | 74 - frontend/src/pages/admin/users.tsx | 87 - frontend/src/pages/api/[...all].tsx | 23 - .../resetPassword/[resetPasswordToken].tsx | 86 - .../src/pages/auth/resetPassword/index.tsx | 115 - frontend/src/pages/auth/signIn.tsx | 44 - frontend/src/pages/auth/signUp.tsx | 14 - frontend/src/pages/auth/totp/[loginToken].tsx | 18 - frontend/src/pages/error.tsx | 52 - frontend/src/pages/index.tsx | 189 - frontend/src/pages/s/[shareId].ts | 18 - frontend/src/pages/share/[shareId]/edit.tsx | 71 - frontend/src/pages/share/[shareId]/index.tsx | 122 - .../src/pages/upload/[reverseShareToken].tsx | 52 - frontend/src/pages/upload/index.tsx | 221 - frontend/src/services/api.service.ts | 7 - frontend/src/services/auth.service.ts | 110 - frontend/src/services/config.service.ts | 66 - frontend/src/services/share.service.ts | 161 - frontend/src/services/user.service.ts | 51 - frontend/src/styles/global.style.tsx | 26 - frontend/src/styles/header.style.ts | 80 - frontend/src/styles/mantine.style.ts | 29 - frontend/src/types/File.type.ts | 11 - frontend/src/types/config.type.ts | 43 - frontend/src/types/share.type.ts | 54 - frontend/src/types/user.type.ts | 37 - frontend/src/utils/date.util.ts | 32 - frontend/src/utils/fileSize.util.ts | 23 - frontend/src/utils/i18n.util.ts | 50 - frontend/src/utils/loading.util.ts | 6 - frontend/src/utils/oauth.util.tsx | 29 - frontend/src/utils/router.util.ts | 7 - frontend/src/utils/string.util.ts | 7 - frontend/src/utils/toast.util.tsx | 40 - frontend/src/utils/userPreferences.util.ts | 35 - frontend/tsconfig.json | 32 - img/favicon.ico | Bin 0 -> 3626 bytes img/image.png | Bin 0 -> 47608 bytes img/logo.svg | 1 + img/pingvinshare.jpg | Bin 0 -> 212153 bytes img/pingvinshare.png | Bin 0 -> 32632 bytes img/pingvinshare.svg | 1 + img/undraw_docusaurus_mountain.svg | 171 + img/undraw_docusaurus_react.svg | 170 + img/undraw_docusaurus_tree.svg | 40 + index.html | 13 + introduction/index.html | 30 + package-lock.json | 1615 -- package.json | 15 - pingvinshare.svg | 1 + scripts/docker-entrypoint.sh | 10 - setup/configuration/index.html | 20 + setup/installation/index.html | 29 + setup/integrations/index.html | 21 + setup/oauth2login/index.html | 80 + setup/upgrading/index.html | 28 + sitemap.xml | 1 + 328 files changed, 805 insertions(+), 56087 deletions(-) delete mode 100644 .dockerignore delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/ISSUE_TEMPLATE/bug.yml delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature.yml delete mode 100644 .github/ISSUE_TEMPLATE/language-request.yml delete mode 100644 .github/workflows/backend-system-tests.yml delete mode 100644 .github/workflows/build-docker-image.yml delete mode 100644 .gitignore create mode 100644 .nojekyll create mode 100644 404.html delete mode 100644 CHANGELOG.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Caddyfile delete mode 100644 Dockerfile create mode 100644 How to/contribute/index.html create mode 100644 How to/translate/index.html delete mode 100644 LICENSE delete mode 100644 README.md delete mode 100644 SECURITY.md create mode 100644 assets/css/styles.2478c382.css create mode 100644 assets/js/0e384e19.faa15ffa.js create mode 100644 assets/js/17896441.5e15038e.js create mode 100644 assets/js/1df93b7f.414879d5.js create mode 100644 assets/js/237.f947e7e3.js create mode 100644 assets/js/3205bd6d.86b778bb.js create mode 100644 assets/js/36493d4b.b0bd8bf4.js create mode 100644 assets/js/3f2e6990.91d251d4.js create mode 100644 assets/js/5e95c892.59168106.js create mode 100644 assets/js/7cbc9cee.324e9707.js create mode 100644 assets/js/a0d20388.cc3ff9b4.js create mode 100644 assets/js/a7456010.91f0b3e9.js create mode 100644 assets/js/a7bd4aaa.96f06b44.js create mode 100644 assets/js/a8c31fc1.34ec6f0d.js create mode 100644 assets/js/a94703ab.eb98faa6.js create mode 100644 assets/js/aba21aa0.ad2b3c84.js create mode 100644 assets/js/d131c913.b751eb49.js create mode 100644 assets/js/ffb3bb1a.e6fb6a6c.js create mode 100644 assets/js/main.876bc575.js create mode 100644 assets/js/main.876bc575.js.LICENSE.txt create mode 100644 assets/js/runtime~main.40a3a5be.js delete mode 100644 backend/.eslintrc.json delete mode 100644 backend/.prettierignore delete mode 100644 backend/nest-cli.json delete mode 100644 backend/package-lock.json delete mode 100644 backend/package.json delete mode 100644 backend/prisma/.env delete mode 100644 backend/prisma/migrations/20221011172612_init/migration.sql delete mode 100644 backend/prisma/migrations/20221013212615_cascade_delete_on_share/migration.sql delete mode 100644 backend/prisma/migrations/20221018123139_make_creator_optional/migration.sql delete mode 100644 backend/prisma/migrations/20221113221005_share_recipient/migration.sql delete mode 100644 backend/prisma/migrations/20221201220540_config_and_admin_functionalities/migration.sql delete mode 100644 backend/prisma/migrations/20221208191607_v0_3_3/migration.sql delete mode 100644 backend/prisma/migrations/20221213173854_v0_3_6/migration.sql delete mode 100644 backend/prisma/migrations/20221219061131_user_entity/migration.sql delete mode 100644 backend/prisma/migrations/20221230120407_category_attribute_config/migration.sql delete mode 100644 backend/prisma/migrations/20230104145733_v0_5_1/migration.sql delete mode 100644 backend/prisma/migrations/20230113080918_removed_reason_attribute/migration.sql delete mode 100644 backend/prisma/migrations/20230126125501_reverse_shares/migration.sql delete mode 100644 backend/prisma/migrations/20230209205230_v0_10_0/migration.sql delete mode 100644 backend/prisma/migrations/20230303091601_v0_11_0/migration.sql delete mode 100644 backend/prisma/migrations/20230319120712_edited_value/migration.sql delete mode 100644 backend/prisma/migrations/20230718155819_remove_config_veriable_description/migration.sql delete mode 100644 backend/prisma/migrations/20231021165436_oauth/migration.sql delete mode 100644 backend/prisma/migrations/20240501154254_share_name_property/migration.sql delete mode 100644 backend/prisma/migrations/20240609145325_add_simplied_field_for_reverse_share/migration.sql delete mode 100644 backend/prisma/migrations/20240725141038_add_public_access_field_for_reverse_share/migration.sql delete mode 100644 backend/prisma/migrations/20240803232708_ldap_support/migration.sql delete mode 100644 backend/prisma/migrations/migration_lock.toml delete mode 100644 backend/prisma/schema.prisma delete mode 100644 backend/prisma/seed/config.seed.ts delete mode 100644 backend/src/app.controller.ts delete mode 100644 backend/src/app.module.ts delete mode 100644 backend/src/auth/auth.controller.ts delete mode 100644 backend/src/auth/auth.module.ts delete mode 100644 backend/src/auth/auth.service.ts delete mode 100644 backend/src/auth/authTotp.service.ts delete mode 100644 backend/src/auth/decorator/getUser.decorator.ts delete mode 100644 backend/src/auth/dto/authRegister.dto.ts delete mode 100644 backend/src/auth/dto/authSignIn.dto.ts delete mode 100644 backend/src/auth/dto/authSignInTotp.dto.ts delete mode 100644 backend/src/auth/dto/enableTotp.dto.ts delete mode 100644 backend/src/auth/dto/resetPassword.dto.ts delete mode 100644 backend/src/auth/dto/token.dto.ts delete mode 100644 backend/src/auth/dto/updatePassword.dto.ts delete mode 100644 backend/src/auth/dto/verifyTotp.dto.ts delete mode 100644 backend/src/auth/guard/isAdmin.guard.ts delete mode 100644 backend/src/auth/guard/jwt.guard.ts delete mode 100644 backend/src/auth/ldap.service.ts delete mode 100644 backend/src/auth/strategy/jwt.strategy.ts delete mode 100644 backend/src/clamscan/clamscan.module.ts delete mode 100644 backend/src/clamscan/clamscan.service.ts delete mode 100644 backend/src/config/config.controller.ts delete mode 100644 backend/src/config/config.module.ts delete mode 100644 backend/src/config/config.service.ts delete mode 100644 backend/src/config/dto/adminConfig.dto.ts delete mode 100644 backend/src/config/dto/config.dto.ts delete mode 100644 backend/src/config/dto/testEmail.dto.ts delete mode 100644 backend/src/config/dto/updateConfig.dto.ts delete mode 100644 backend/src/config/logo.service.ts delete mode 100644 backend/src/constants.ts delete mode 100644 backend/src/email/email.module.ts delete mode 100644 backend/src/email/email.service.ts delete mode 100644 backend/src/file/dto/file.dto.ts delete mode 100644 backend/src/file/file.controller.ts delete mode 100644 backend/src/file/file.module.ts delete mode 100644 backend/src/file/file.service.ts delete mode 100644 backend/src/file/guard/fileSecurity.guard.ts delete mode 100644 backend/src/jobs/jobs.module.ts delete mode 100644 backend/src/jobs/jobs.service.ts delete mode 100644 backend/src/main.ts delete mode 100644 backend/src/oauth/dto/oauthCallback.dto.ts delete mode 100644 backend/src/oauth/dto/oauthSignIn.dto.ts delete mode 100644 backend/src/oauth/exceptions/errorPage.exception.ts delete mode 100644 backend/src/oauth/filter/errorPageException.filter.ts delete mode 100644 backend/src/oauth/filter/oauthException.filter.ts delete mode 100644 backend/src/oauth/guard/oauth.guard.ts delete mode 100644 backend/src/oauth/guard/provider.guard.ts delete mode 100644 backend/src/oauth/oauth.controller.ts delete mode 100644 backend/src/oauth/oauth.module.ts delete mode 100644 backend/src/oauth/oauth.service.ts delete mode 100644 backend/src/oauth/provider/discord.provider.ts delete mode 100644 backend/src/oauth/provider/genericOidc.provider.ts delete mode 100644 backend/src/oauth/provider/github.provider.ts delete mode 100644 backend/src/oauth/provider/google.provider.ts delete mode 100644 backend/src/oauth/provider/microsoft.provider.ts delete mode 100644 backend/src/oauth/provider/oauthProvider.interface.ts delete mode 100644 backend/src/oauth/provider/oidc.provider.ts delete mode 100644 backend/src/prisma/prisma.module.ts delete mode 100644 backend/src/prisma/prisma.service.ts delete mode 100644 backend/src/reverseShare/dto/createReverseShare.dto.ts delete mode 100644 backend/src/reverseShare/dto/reverseShare.dto.ts delete mode 100644 backend/src/reverseShare/dto/reverseShareTokenWithShares.ts delete mode 100644 backend/src/reverseShare/guards/reverseShareOwner.guard.ts delete mode 100644 backend/src/reverseShare/reverseShare.controller.ts delete mode 100644 backend/src/reverseShare/reverseShare.module.ts delete mode 100644 backend/src/reverseShare/reverseShare.service.ts delete mode 100644 backend/src/share/dto/adminShare.dto.ts delete mode 100644 backend/src/share/dto/createShare.dto.ts delete mode 100644 backend/src/share/dto/myShare.dto.ts delete mode 100644 backend/src/share/dto/share.dto.ts delete mode 100644 backend/src/share/dto/shareComplete.dto.ts delete mode 100644 backend/src/share/dto/shareMetaData.dto.ts delete mode 100644 backend/src/share/dto/sharePassword.dto.ts delete mode 100644 backend/src/share/dto/shareSecurity.dto.ts delete mode 100644 backend/src/share/guard/createShare.guard.ts delete mode 100644 backend/src/share/guard/shareOwner.guard.ts delete mode 100644 backend/src/share/guard/shareSecurity.guard.ts delete mode 100644 backend/src/share/guard/shareTokenSecurity.guard.ts delete mode 100644 backend/src/share/share.controller.ts delete mode 100644 backend/src/share/share.module.ts delete mode 100644 backend/src/share/share.service.ts delete mode 100644 backend/src/user/dto/createUser.dto.ts delete mode 100644 backend/src/user/dto/publicUser.dto.ts delete mode 100644 backend/src/user/dto/updateOwnUser.dto.ts delete mode 100644 backend/src/user/dto/updateUser.dto.ts delete mode 100644 backend/src/user/dto/user.dto.ts delete mode 100644 backend/src/user/user.controller.ts delete mode 100644 backend/src/user/user.module.ts delete mode 100644 backend/src/user/user.service.ts delete mode 100644 backend/src/utils/date.util.ts delete mode 100644 backend/test/newman-system-tests.json delete mode 100644 backend/tsconfig.build.json delete mode 100644 backend/tsconfig.json delete mode 100644 crowdin.yml delete mode 100644 docker-compose-dev.yml delete mode 100644 docker-compose.yml delete mode 100644 docs/CONTRIBUTING.es.md delete mode 100644 docs/CONTRIBUTING.zh-cn.md delete mode 100644 docs/README.es.md delete mode 100644 docs/README.ja-jp.md delete mode 100644 docs/README.zh-cn.md delete mode 100644 docs/oauth2-guide.md delete mode 100644 frontend/.eslintrc.json delete mode 100644 frontend/.prettierignore delete mode 100644 frontend/next-env.d.ts delete mode 100644 frontend/next.config.js delete mode 100644 frontend/package-lock.json delete mode 100644 frontend/package.json delete mode 100644 frontend/public/img/favicon.ico delete mode 100644 frontend/public/img/icons/icon-128x128.png delete mode 100644 frontend/public/img/icons/icon-144x144.png delete mode 100644 frontend/public/img/icons/icon-152x152.png delete mode 100644 frontend/public/img/icons/icon-192x192.png delete mode 100644 frontend/public/img/icons/icon-384x384.png delete mode 100644 frontend/public/img/icons/icon-48x48.png delete mode 100644 frontend/public/img/icons/icon-512x512.png delete mode 100644 frontend/public/img/icons/icon-72x72.png delete mode 100644 frontend/public/img/icons/icon-96x96.png delete mode 100644 frontend/public/img/logo.png delete mode 100644 frontend/public/manifest.json delete mode 100644 frontend/src/components/Logo.tsx delete mode 100644 frontend/src/components/Meta.tsx delete mode 100644 frontend/src/components/account/LanguagePicker.tsx delete mode 100644 frontend/src/components/account/ThemeSwitcher.tsx delete mode 100644 frontend/src/components/account/showEnableTotpModal.tsx delete mode 100644 frontend/src/components/account/showReverseShareLinkModal.tsx delete mode 100644 frontend/src/components/account/showShareInformationsModal.tsx delete mode 100644 frontend/src/components/account/showShareLinkModal.tsx delete mode 100644 frontend/src/components/admin/configuration/AdminConfigInput.tsx delete mode 100644 frontend/src/components/admin/configuration/ConfigurationHeader.tsx delete mode 100644 frontend/src/components/admin/configuration/ConfigurationNavBar.tsx delete mode 100644 frontend/src/components/admin/configuration/LogoConfigInput.tsx delete mode 100644 frontend/src/components/admin/configuration/TestEmailButton.tsx delete mode 100644 frontend/src/components/admin/shares/ManageShareTable.tsx delete mode 100644 frontend/src/components/admin/users/ManageUserTable.tsx delete mode 100644 frontend/src/components/admin/users/showCreateUserModal.tsx delete mode 100644 frontend/src/components/admin/users/showUpdateUserModal.tsx delete mode 100644 frontend/src/components/auth/SignInForm.tsx delete mode 100644 frontend/src/components/auth/SignUpForm.tsx delete mode 100644 frontend/src/components/auth/TotpForm.tsx delete mode 100644 frontend/src/components/core/CenterLoader.tsx delete mode 100644 frontend/src/components/core/SortIcon.tsx delete mode 100644 frontend/src/components/header/ActionAvatar.tsx delete mode 100644 frontend/src/components/header/Header.tsx delete mode 100644 frontend/src/components/header/NavbarShareMenu.tsx delete mode 100644 frontend/src/components/share/DownloadAllButton.tsx delete mode 100644 frontend/src/components/share/FileList.tsx delete mode 100644 frontend/src/components/share/FilePreview.tsx delete mode 100644 frontend/src/components/share/FileSizeInput.tsx delete mode 100644 frontend/src/components/share/modals/showCompletedReverseShareModal.tsx delete mode 100644 frontend/src/components/share/modals/showCreateReverseShareModal.tsx delete mode 100644 frontend/src/components/share/modals/showFilePreviewModal.tsx delete mode 100644 frontend/src/components/share/showEnterPasswordModal.tsx delete mode 100644 frontend/src/components/share/showErrorModal.tsx delete mode 100644 frontend/src/components/upload/CopyTextField.tsx delete mode 100644 frontend/src/components/upload/Dropzone.tsx delete mode 100644 frontend/src/components/upload/EditableUpload.tsx delete mode 100644 frontend/src/components/upload/FileList.tsx delete mode 100644 frontend/src/components/upload/UploadProgressIndicator.tsx delete mode 100644 frontend/src/components/upload/modals/showCompletedUploadModal.tsx delete mode 100644 frontend/src/components/upload/modals/showCreateUploadModal.tsx delete mode 100644 frontend/src/hooks/config.hook.ts delete mode 100644 frontend/src/hooks/useTranslate.hook.ts delete mode 100644 frontend/src/hooks/user.hook.ts delete mode 100644 frontend/src/i18n/locales.ts delete mode 100644 frontend/src/i18n/translations/ar-EG.ts delete mode 100644 frontend/src/i18n/translations/da-DK.ts delete mode 100644 frontend/src/i18n/translations/de-DE.ts delete mode 100644 frontend/src/i18n/translations/el-GR.ts delete mode 100644 frontend/src/i18n/translations/en-US.ts delete mode 100644 frontend/src/i18n/translations/es-ES.ts delete mode 100644 frontend/src/i18n/translations/fi-FI.ts delete mode 100644 frontend/src/i18n/translations/fr-FR.ts delete mode 100644 frontend/src/i18n/translations/hu-HU.ts delete mode 100644 frontend/src/i18n/translations/it-IT.ts delete mode 100644 frontend/src/i18n/translations/ja-JP.ts delete mode 100644 frontend/src/i18n/translations/ko-KR.ts delete mode 100644 frontend/src/i18n/translations/nl-BE.ts delete mode 100644 frontend/src/i18n/translations/pl-PL.ts delete mode 100644 frontend/src/i18n/translations/pt-BR.ts delete mode 100644 frontend/src/i18n/translations/ru-RU.ts delete mode 100644 frontend/src/i18n/translations/sl-SI.ts delete mode 100644 frontend/src/i18n/translations/sr-SP.ts delete mode 100644 frontend/src/i18n/translations/sv-SE.ts delete mode 100644 frontend/src/i18n/translations/th-TH.ts delete mode 100644 frontend/src/i18n/translations/tr-TR.ts delete mode 100644 frontend/src/i18n/translations/uk-UA.ts delete mode 100644 frontend/src/i18n/translations/zh-CN.ts delete mode 100644 frontend/src/i18n/translations/zh-TW.ts delete mode 100644 frontend/src/middleware.ts delete mode 100644 frontend/src/pages/404.tsx delete mode 100644 frontend/src/pages/_app.tsx delete mode 100644 frontend/src/pages/_document.tsx delete mode 100644 frontend/src/pages/account/index.tsx delete mode 100644 frontend/src/pages/account/reverseShares.tsx delete mode 100644 frontend/src/pages/account/shares.tsx delete mode 100644 frontend/src/pages/admin/config/[category].tsx delete mode 100644 frontend/src/pages/admin/index.tsx delete mode 100644 frontend/src/pages/admin/intro.tsx delete mode 100644 frontend/src/pages/admin/shares.tsx delete mode 100644 frontend/src/pages/admin/users.tsx delete mode 100644 frontend/src/pages/api/[...all].tsx delete mode 100644 frontend/src/pages/auth/resetPassword/[resetPasswordToken].tsx delete mode 100644 frontend/src/pages/auth/resetPassword/index.tsx delete mode 100644 frontend/src/pages/auth/signIn.tsx delete mode 100644 frontend/src/pages/auth/signUp.tsx delete mode 100644 frontend/src/pages/auth/totp/[loginToken].tsx delete mode 100644 frontend/src/pages/error.tsx delete mode 100644 frontend/src/pages/index.tsx delete mode 100644 frontend/src/pages/s/[shareId].ts delete mode 100644 frontend/src/pages/share/[shareId]/edit.tsx delete mode 100644 frontend/src/pages/share/[shareId]/index.tsx delete mode 100644 frontend/src/pages/upload/[reverseShareToken].tsx delete mode 100644 frontend/src/pages/upload/index.tsx delete mode 100644 frontend/src/services/api.service.ts delete mode 100644 frontend/src/services/auth.service.ts delete mode 100644 frontend/src/services/config.service.ts delete mode 100644 frontend/src/services/share.service.ts delete mode 100644 frontend/src/services/user.service.ts delete mode 100644 frontend/src/styles/global.style.tsx delete mode 100644 frontend/src/styles/header.style.ts delete mode 100644 frontend/src/styles/mantine.style.ts delete mode 100644 frontend/src/types/File.type.ts delete mode 100644 frontend/src/types/config.type.ts delete mode 100644 frontend/src/types/share.type.ts delete mode 100644 frontend/src/types/user.type.ts delete mode 100644 frontend/src/utils/date.util.ts delete mode 100644 frontend/src/utils/fileSize.util.ts delete mode 100644 frontend/src/utils/i18n.util.ts delete mode 100644 frontend/src/utils/loading.util.ts delete mode 100644 frontend/src/utils/oauth.util.tsx delete mode 100644 frontend/src/utils/router.util.ts delete mode 100644 frontend/src/utils/string.util.ts delete mode 100644 frontend/src/utils/toast.util.tsx delete mode 100644 frontend/src/utils/userPreferences.util.ts delete mode 100644 frontend/tsconfig.json create mode 100644 img/favicon.ico create mode 100644 img/image.png create mode 100644 img/logo.svg create mode 100644 img/pingvinshare.jpg create mode 100644 img/pingvinshare.png create mode 100644 img/pingvinshare.svg create mode 100644 img/undraw_docusaurus_mountain.svg create mode 100644 img/undraw_docusaurus_react.svg create mode 100644 img/undraw_docusaurus_tree.svg create mode 100644 index.html create mode 100644 introduction/index.html delete mode 100644 package-lock.json delete mode 100644 package.json create mode 100644 pingvinshare.svg delete mode 100644 scripts/docker-entrypoint.sh create mode 100644 setup/configuration/index.html create mode 100644 setup/installation/index.html create mode 100644 setup/integrations/index.html create mode 100644 setup/oauth2login/index.html create mode 100644 setup/upgrading/index.html create mode 100644 sitemap.xml diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 1f9167d..0000000 --- a/.dockerignore +++ /dev/null @@ -1,8 +0,0 @@ -backend/dist/ -backend/node_modules/ -backend/data - -frontend/node_modules/ -frontend/.next/ - -**/.git/ diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index da4b14c..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -# These are supported funding model platforms -github: stonith404 diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml deleted file mode 100644 index 0088dc6..0000000 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: "🐛 Bug Report" -description: "Submit a bug report to help us improve" -title: "🐛 Bug Report: " -labels: [bug] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill out our bug report form 🙏 - - type: textarea - id: steps-to-reproduce - validations: - required: true - attributes: - label: "👟 Reproduction steps" - description: "How do you trigger this bug? Please walk us through it step by step." - placeholder: "When I ..." - - type: textarea - id: expected-behavior - validations: - required: true - attributes: - label: "👍 Expected behavior" - description: "What did you think would happen?" - placeholder: "It should ..." - - type: textarea - id: actual-behavior - validations: - required: true - attributes: - label: "👎 Actual Behavior" - description: "What did actually happen? Add screenshots, if applicable." - placeholder: "It actually ..." - - type: input - id: operating-system - attributes: - label: "🌐 Browser" - description: "Which browser do you use?" - placeholder: "Firefox" - validations: - required: true - - type: markdown - attributes: - value: | - Before submitting, please check if the issues hasn't been raised before. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index acee7cb..0000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: 💬 Discord - url: https://discord.gg/wHRQ9nFRcK - about: For help and chatting with the community diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml deleted file mode 100644 index 7117fb6..0000000 --- a/.github/ISSUE_TEMPLATE/feature.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: 🚀 Feature -description: "Submit a proposal for a new feature" -title: "🚀 Feature: " -labels: [feature] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill out our feature request form 🙏 - - type: textarea - id: feature-description - validations: - required: true - attributes: - label: "🔖 Feature description" - description: "A clear and concise description of what the feature is." - placeholder: "You should add ..." - - type: textarea - id: pitch - validations: - required: true - attributes: - label: "🎤 Pitch" - description: "Please explain why this feature should be implemented and how it would be used. Add examples, if applicable." - placeholder: "In my use-case, ..." - - type: markdown - attributes: - value: | - Before submitting, please check if the issues hasn't been raised before. diff --git a/.github/ISSUE_TEMPLATE/language-request.yml b/.github/ISSUE_TEMPLATE/language-request.yml deleted file mode 100644 index 7b289e5..0000000 --- a/.github/ISSUE_TEMPLATE/language-request.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: "🌐 Language request" -description: "You want to contribute to a language that isn't on Crowdin yet?" -title: "🌐 Language request: " -labels: [language-request] -body: - - type: input - id: language-name-native - attributes: - label: "🌐 Language name (native)" - placeholder: "Schweizerdeutsch" - validations: - required: true - - type: input - id: language-code - attributes: - label: "🌐 Language code" - placeholder: "de-CH" - validations: - required: true diff --git a/.github/workflows/backend-system-tests.yml b/.github/workflows/backend-system-tests.yml deleted file mode 100644 index d27a744..0000000 --- a/.github/workflows/backend-system-tests.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Backend system tests - -on: - pull_request: - branches: - - main - push: - tags: - - "v*" - -jobs: - system-tests: - runs-on: ubuntu-latest - container: node:18 - steps: - - uses: actions/checkout@v3 - - name: Install Dependencies - working-directory: ./backend - run: npm install - - name: Run Server and Test with Newman - working-directory: ./backend - run: npm run test:system diff --git a/.github/workflows/build-docker-image.yml b/.github/workflows/build-docker-image.yml deleted file mode 100644 index dde2072..0000000 --- a/.github/workflows/build-docker-image.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Build and Push Docker Image - -on: - release: - types: [published] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: checkout code - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to Docker registry - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Build and push - uses: docker/build-push-action@v4 - with: - context: . - platforms: linux/amd64,linux/arm64 - push: true - tags: stonith404/pingvin-share:latest,stonith404/pingvin-share:${{ github.ref_name }} - cache-from: type=gha - cache-to: type=gha,mode=max diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 80e7fe1..0000000 --- a/.gitignore +++ /dev/null @@ -1,43 +0,0 @@ -# dependencies -node_modules -.pnp -.pnp.js - -# next.js -/frontend/.next/ -/frontend/out/ - -# build -build/ -dist/ - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* - -# env file -.env -!/backend/prisma/.env - -# vercel -.vercel - -# typescript -*.tsbuildinfo - -# PWA -/frontend/public/workbox-* -/frontend/public/sw.* - -# project specific -/backend/data/ -/data/ - -# Jetbrains specific (webstorm) -.idea/**/** diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..4eeb66d --- /dev/null +++ b/404.html @@ -0,0 +1,13 @@ + + + + + +Pingvin Share + + + + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 442e6c0..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,758 +0,0 @@ -## [0.29.0](https://github.com/stonith404/pingvin-share/compare/v0.28.0...v0.29.0) (2024-07-30) - - -### Features - -* add more options to reverse shares ([#495](https://github.com/stonith404/pingvin-share/issues/495)) ([fe735f9](https://github.com/stonith404/pingvin-share/commit/fe735f9704c9d96398f3127a559e17848b08d140)), closes [#155](https://github.com/stonith404/pingvin-share/issues/155) -* sort share files by name by default ([27ee9fb](https://github.com/stonith404/pingvin-share/commit/27ee9fb6cb98177661bed20a0baa399b27e70b7e)) - - -### Reverts - -* Revert "fix: set max age of access token cookie to 15 minutes" ([14c2185](https://github.com/stonith404/pingvin-share/commit/14c2185e6f1a81d63e25fbeec3e30a54cf6a44c5)) - -## [0.28.0](https://github.com/stonith404/pingvin-share/compare/v0.27.0...v0.28.0) (2024-07-22) - - -### Features - -* **auth:** Add role-based access management from OpenID Connect ([#535](https://github.com/stonith404/pingvin-share/issues/535)) ([70fd2d9](https://github.com/stonith404/pingvin-share/commit/70fd2d94be3411cc430f5c56e522028398127efb)) - - -### Bug Fixes - -* store only 10 share tokens in the cookies and clear the expired ones ([e5a0c64](https://github.com/stonith404/pingvin-share/commit/e5a0c649e36e0db419d04446affe2564c45cf321)) - -## [0.27.0](https://github.com/stonith404/pingvin-share/compare/v0.26.0...v0.27.0) (2024-07-11) - - -### Features - -* add logs for successful registration, successful login and failed login ([d2bfb9a](https://github.com/stonith404/pingvin-share/commit/d2bfb9a55fdad6a05377b8552471cf1151304c90)) -* **auth:** Allow to hide username / password login form when OAuth is enabled ([#518](https://github.com/stonith404/pingvin-share/issues/518)) ([e1a68f7](https://github.com/stonith404/pingvin-share/commit/e1a68f75f7b034f1ef9e45f26de584f13e355589)), closes [#489](https://github.com/stonith404/pingvin-share/issues/489) -* **smtp:** allow unauthorized mail server certificates ([#525](https://github.com/stonith404/pingvin-share/issues/525)) ([083d82c](https://github.com/stonith404/pingvin-share/commit/083d82c28b835c178f076e89ef8f5885e8ea31cb)) - -## [0.26.0](https://github.com/stonith404/pingvin-share/compare/v0.25.0...v0.26.0) (2024-07-03) - - -### Features - -* **backend:** Make session duration configurable ([#512](https://github.com/stonith404/pingvin-share/issues/512)) ([367f804](https://github.com/stonith404/pingvin-share/commit/367f804a494c85b4caf879d51982339fb6b86ba1)), closes [#507](https://github.com/stonith404/pingvin-share/issues/507) - - -### Bug Fixes - -* **oauth:** provider username is ignored when signing up using OAuth ([#511](https://github.com/stonith404/pingvin-share/issues/511)) ([31366d9](https://github.com/stonith404/pingvin-share/commit/31366d961f5827c200038b65ec9de5d4ddc8b898)), closes [#505](https://github.com/stonith404/pingvin-share/issues/505) -* set max age of access token cookie to 15 minutes ([2dac385](https://github.com/stonith404/pingvin-share/commit/2dac38560b6c54b6e7676dcd4682bfa57973292f)) - -## [0.25.0](https://github.com/stonith404/pingvin-share/compare/v0.24.2...v0.25.0) (2024-06-10) - - -### Features - -* add auto open share modal config for global. ([#474](https://github.com/stonith404/pingvin-share/issues/474)) ([4fd2903](https://github.com/stonith404/pingvin-share/commit/4fd29037a08dbe505bdd8cf20f6f114cbade8483)) -* **frontend:** locale for dates and tooltip for copy link button ([#492](https://github.com/stonith404/pingvin-share/issues/492)) ([1c7832a](https://github.com/stonith404/pingvin-share/commit/1c7832ad1fb445fd1dbe1c111be5a331eaa4b797)) - - -### Bug Fixes - -* share size not displayed on my shares page ([c0cc16f](https://github.com/stonith404/pingvin-share/commit/c0cc16fa430bc64afb024c19d5faf24456bd417c)) - -## [0.24.2](https://github.com/stonith404/pingvin-share/compare/v0.24.1...v0.24.2) (2024-05-22) - - -### Bug Fixes - -* admin couldn't delete shares created by anonymous users ([7afda85](https://github.com/stonith404/pingvin-share/commit/7afda85f03d410a6c611860d0c3fb2b88a2e3679)) -* whitespace in title on homepage ([74cd520](https://github.com/stonith404/pingvin-share/commit/74cd520cb8c4ea87822ab6d54c0bf010455f401b)) - -## [0.24.1](https://github.com/stonith404/pingvin-share/compare/v0.24.0...v0.24.1) (2024-05-04) - - -### Bug Fixes - -* error on admin share management page if a share was created by an anonymous user ([c999df1](https://github.com/stonith404/pingvin-share/commit/c999df15e04a927f6e952db3c807b9591fb14894)) - -## [0.24.0](https://github.com/stonith404/pingvin-share/compare/v0.23.1...v0.24.0) (2024-05-04) - - -### Features - -* add admin-exclusive share-management page ([#461](https://github.com/stonith404/pingvin-share/issues/461)) ([3b1c9f1](https://github.com/stonith404/pingvin-share/commit/3b1c9f1efb7d02469e92537a2d1378b6cb412878)) -* add name property to share ([#462](https://github.com/stonith404/pingvin-share/issues/462)) ([b717663](https://github.com/stonith404/pingvin-share/commit/b717663b5c3a4a98e361e7e39b680f4852537c59)) - -## [0.23.1](https://github.com/stonith404/pingvin-share/compare/v0.23.0...v0.23.1) (2024-04-05) - - -### Bug Fixes - -* **backend:** crash on unhandled promise rejections ([1da4fee](https://github.com/stonith404/pingvin-share/commit/1da4feeb895a13d0a0ae754bd716a84e8186d081)) -* changing the chunk size needed an app restart ([24e100b](https://github.com/stonith404/pingvin-share/commit/24e100bd7be8bf20778bdf2767aa35cae8d7e502)) -* disable js execution on raw file view ([9d1a12b](https://github.com/stonith404/pingvin-share/commit/9d1a12b0d1812214f1fe6fa56e3848091ce4945c)) -* incorrect layout on 404 page ([3c5e0ad](https://github.com/stonith404/pingvin-share/commit/3c5e0ad5134ee2d405ac420152b5825102f65bfc)) -* normal shares were added to the previous reverse share ([3972589](https://github.com/stonith404/pingvin-share/commit/3972589f76519b03074d916fb2460c795b1f0737)) -* redirect vulnerability on error, sign in and totp page ([384fd19](https://github.com/stonith404/pingvin-share/commit/384fd19203b63eeb4b952f83a9e1eaab1b19b90d)) - -## [0.23.0](https://github.com/stonith404/pingvin-share/compare/v0.22.2...v0.23.0) (2024-04-04) - - -### Features - -* add config variable to adjust chunk size ([0bfbaea](https://github.com/stonith404/pingvin-share/commit/0bfbaea49aad0c695fee6558c89c661687912e4f)) - - -### Bug Fixes - -* delete share files if user gets deleted ([e71f6cd](https://github.com/stonith404/pingvin-share/commit/e71f6cd1598ed87366074398042a6b88675587ca)) -* error in logs if "allow unauthenticated shares" is enabled ([c6d8188](https://github.com/stonith404/pingvin-share/commit/c6d8188e4e33ba682551a3ca79205ff5a6d7ead5)) -* memory leak while uploading files by disabling base64 encoding of chunks ([7a15fbb](https://github.com/stonith404/pingvin-share/commit/7a15fbb4651c2fee32fb4c1ee2c9d7f12323feb0)) - -## [0.22.2](https://github.com/stonith404/pingvin-share/compare/v0.22.1...v0.22.2) (2024-02-29) - - -### Bug Fixes - -* extend access token cookie expiration ([013b988](https://github.com/stonith404/pingvin-share/commit/013b9886af5629b2ead6000b962267afc761c612)) -* reduce refresh access token calls ([1aa3d8e](https://github.com/stonith404/pingvin-share/commit/1aa3d8e5e89b3696cc9554f41e9ce13806dde406)) -* replace Nginx with Caddy to fix "premature close" error while downloading larger files ([43bff91](https://github.com/stonith404/pingvin-share/commit/43bff91db2ba4ec68d76e601f7bc42cb7a506bc5)) - -## [0.22.1](https://github.com/stonith404/pingvin-share/compare/v0.22.0...v0.22.1) (2024-02-18) - - -### Bug Fixes - -* back links on error modals ([f52dffd](https://github.com/stonith404/pingvin-share/commit/f52dffdaac5a893804525913943f3f4f99b7c55a)) -* prevent zoom on input field click on mobile ([9c734ec](https://github.com/stonith404/pingvin-share/commit/9c734ec439aeaeebe172caa41bf531e6d8b3fac3)) -* replace middleware backend url with local backend url ([76df6f6](https://github.com/stonith404/pingvin-share/commit/76df6f66d965dd751146468abfafb0c6acd46310)) -* user `id` and `totpVerified` can't be changed by user ([e663da4](https://github.com/stonith404/pingvin-share/commit/e663da45b1d15f5e6e33118e6a28e1504688034c)) -* user enumaration on forgot password page ([64515d7](https://github.com/stonith404/pingvin-share/commit/64515d77cfc116a243d78610395ccc383ba62940)) - -## [0.22.0](https://github.com/stonith404/pingvin-share/compare/v0.21.5...v0.22.0) (2024-02-04) - - -### Bug Fixes - -* **translations:** typo in string ([c189cd9](https://github.com/stonith404/pingvin-share/commit/c189cd97a502cee8ea79e5187d9288d636d4983c)) - -## [0.21.5](https://github.com/stonith404/pingvin-share/compare/v0.21.4...v0.21.5) (2024-01-14) - - -### Bug Fixes - -* password can be changed with wrong password ([0ccb836](https://github.com/stonith404/pingvin-share/commit/0ccb8364448d27ea07c8b11972ff454d610893c6)) - -## [0.21.4](https://github.com/stonith404/pingvin-share/compare/v0.21.3...v0.21.4) (2024-01-09) - - -### Features - -* **frontend:** add navigateToLink button for CopyTextField. close [#372](https://github.com/stonith404/pingvin-share/issues/372). ([#376](https://github.com/stonith404/pingvin-share/issues/376)) ([d775008](https://github.com/stonith404/pingvin-share/commit/d7750086b5b796cfc70d8dc0c7d0ab4bd1996ca0)) - -## [0.21.3](https://github.com/stonith404/pingvin-share/compare/v0.21.2...v0.21.3) (2024-01-02) - - -### Bug Fixes - -* don't show validation error on upload modal if password or max views are empty ([fe09d0e](https://github.com/stonith404/pingvin-share/commit/fe09d0e25f6fbfc4e1c9302054d3387fe8b1f0ea)) - -## [0.21.2](https://github.com/stonith404/pingvin-share/compare/v0.21.1...v0.21.2) (2023-12-29) - - -### Bug Fixes - -* missing logo images on fresh installation ([6fb31ab](https://github.com/stonith404/pingvin-share/commit/6fb31abd84b22cd464b6b45bf7ca6f83853e8720)) -* missing translations on reset password page ([7a301b4](https://github.com/stonith404/pingvin-share/commit/7a301b455cdea4b1dbc04cc6223e094fee9aca7b)) - -## [0.21.1](https://github.com/stonith404/pingvin-share/compare/v0.21.0...v0.21.1) (2023-12-20) - - -### Features - -* **oauth:** add oidc username claim ([#357](https://github.com/stonith404/pingvin-share/issues/357)) ([3ea52a2](https://github.com/stonith404/pingvin-share/commit/3ea52a24ef7c3b6845bc13382616ea0c8d784585)) - -## [0.21.0](https://github.com/stonith404/pingvin-share/compare/v0.20.3...v0.21.0) (2023-12-01) - - -### Features - -* **oauth:** limited discord server sign-in ([#346](https://github.com/stonith404/pingvin-share/issues/346)) ([5f94c72](https://github.com/stonith404/pingvin-share/commit/5f94c7295ab8594ed2ed615628214e869a02da2d)) - -## [0.20.3](https://github.com/stonith404/pingvin-share/compare/v0.20.2...v0.20.3) (2023-11-17) - - -### Bug Fixes - -* max expiration gets ignored if expiration is set to "never" ([330eef5](https://github.com/stonith404/pingvin-share/commit/330eef51e4f3f3fb29833bc9337e705553340aaa)) - -## [0.20.2](https://github.com/stonith404/pingvin-share/compare/v0.20.1...v0.20.2) (2023-11-11) - - -### Bug Fixes - -* **oauth:** github and discord login error ([#323](https://github.com/stonith404/pingvin-share/issues/323)) ([fd44f42](https://github.com/stonith404/pingvin-share/commit/fd44f42f28c0fa2091876b138f170202d9fde04e)), closes [#322](https://github.com/stonith404/pingvin-share/issues/322) [#302](https://github.com/stonith404/pingvin-share/issues/302) -* reverse shares couldn't be created unauthenticated ([966ce26](https://github.com/stonith404/pingvin-share/commit/966ce261cb4ad99efaadef5c36564fdfaed0d5c4)) - -## [0.20.1](https://github.com/stonith404/pingvin-share/compare/v0.20.0...v0.20.1) (2023-11-05) - - -### Bug Fixes - -* share information text color in light mode ([1138cd0](https://github.com/stonith404/pingvin-share/commit/1138cd02b0b6ac1d71c4dbc2808110c672237190)) - -## [0.20.0](https://github.com/stonith404/pingvin-share/compare/v0.19.2...v0.20.0) (2023-11-04) - - -### Features - -* ability to add and delete files of existing share ([#306](https://github.com/stonith404/pingvin-share/issues/306)) ([98380e2](https://github.com/stonith404/pingvin-share/commit/98380e2d48cc8ffa831d9b69cf5c0e8a40e28862)) - -## [0.19.2](https://github.com/stonith404/pingvin-share/compare/v0.19.1...v0.19.2) (2023-11-03) - - -### Features - -* ability to limit the max expiration of a share ([bbfc9d6](https://github.com/stonith404/pingvin-share/commit/bbfc9d6f147eea404f011c3af9d7dc7655c3d21d)) -* change totp issuer to display logo in 2FAS app ([e0fbbec](https://github.com/stonith404/pingvin-share/commit/e0fbbeca3c1a858838b20aeead52694772b7d871)) - - -### Bug Fixes - -* jwt secret changes on application restart ([33742a0](https://github.com/stonith404/pingvin-share/commit/33742a043d6549783984ae7e8a3c30f0fe3917de)) -* wrong validation of setting max share expiration to `0` ([acc35f4](https://github.com/stonith404/pingvin-share/commit/acc35f47178e230f50ce54d6f1ad5370caa3382d)) - -## [0.19.1](https://github.com/stonith404/pingvin-share/compare/v0.19.0...v0.19.1) (2023-10-22) - - -### Bug Fixes - -* **oauth:** fix wrong redirectUri in oidc after change appUrl ([#296](https://github.com/stonith404/pingvin-share/issues/296)) ([119b1ec](https://github.com/stonith404/pingvin-share/commit/119b1ec840ad7f4e1c7c4bb476bf1eeed91d9a1a)) - -## [0.19.0](https://github.com/stonith404/pingvin-share/compare/v0.18.2...v0.19.0) (2023-10-22) - - -### Features - -* **auth:** add OAuth2 login ([#276](https://github.com/stonith404/pingvin-share/issues/276)) ([02cd98f](https://github.com/stonith404/pingvin-share/commit/02cd98fa9cf9865d91494848aabaf42b19e4957b)), closes [#278](https://github.com/stonith404/pingvin-share/issues/278) [#279](https://github.com/stonith404/pingvin-share/issues/279) [#281](https://github.com/stonith404/pingvin-share/issues/281) - - -### Bug Fixes - -* delete unfinished shares after a day ([d327bc3](https://github.com/stonith404/pingvin-share/commit/d327bc355c8583231e058731934cf51ab25d9ce5)) - -## [0.18.2](https://github.com/stonith404/pingvin-share/compare/v0.18.1...v0.18.2) (2023-10-09) - - -### Bug Fixes - -* disable image optimizations for logo to prevent caching issues with custom logos ([3891900](https://github.com/stonith404/pingvin-share/commit/38919003e9091203b507d0f0b061f4a1835ff4f4)) -* memory leak while downloading large files ([97e7d71](https://github.com/stonith404/pingvin-share/commit/97e7d7190dfe219caf441dffcd7830c304c3c939)) - -## [0.18.1](https://github.com/stonith404/pingvin-share/compare/v0.18.0...v0.18.1) (2023-09-22) - - -### Bug Fixes - -* permission changes of docker container brakes existing installations ([6a4108e](https://github.com/stonith404/pingvin-share/commit/6a4108ed6138e7297e66fd1e38450f23afe99aae)) - -## [0.18.0](https://github.com/stonith404/pingvin-share/compare/v0.17.5...v0.18.0) (2023-09-21) - - -### Features - -* show upload modal on file drop ([13e7a30](https://github.com/stonith404/pingvin-share/commit/13e7a30bb96faeb25936ff08a107834fd7af5766)) - - -### Bug Fixes - -* **docker:** Updated to newest version of alpine linux and fixed missing dependencies ([#255](https://github.com/stonith404/pingvin-share/issues/255)) ([6fa7af7](https://github.com/stonith404/pingvin-share/commit/6fa7af79051c964060bd291c9faad90fc01a1b72)) -* nextjs proxy warning ([e9efbc1](https://github.com/stonith404/pingvin-share/commit/e9efbc17bcf4827e935e2018dcdf3b70a9a49991)) - -## [0.17.5](https://github.com/stonith404/pingvin-share/compare/v0.17.4...v0.17.5) (2023-09-03) - - -### Features - -* **localization:** Added thai language ([#231](https://github.com/stonith404/pingvin-share/issues/231)) ([bddb87b](https://github.com/stonith404/pingvin-share/commit/bddb87b9b3ec5426a3c7a14a96caf2eb45b93ff7)) - - -### Bug Fixes - -* autocomplete on create share modal ([d4e8d4f](https://github.com/stonith404/pingvin-share/commit/d4e8d4f58b9b7d10b865eff49aa784547891c4e8)) -* missing translation ([7647a9f](https://github.com/stonith404/pingvin-share/commit/7647a9f620cbc5d38e019225a680a53bd3027698)) - -## [0.17.4](https://github.com/stonith404/pingvin-share/compare/v0.17.3...v0.17.4) (2023-08-01) - - -### Bug Fixes - -* redirection to `localhost:3000` ([ea0d521](https://github.com/stonith404/pingvin-share/commit/ea0d5216e89346b8d3ef0277b76fdc6302e9de15)) - -## [0.17.3](https://github.com/stonith404/pingvin-share/compare/v0.17.2...v0.17.3) (2023-07-31) - - -### Bug Fixes - -* logo doesn't get loaded correctly ([9ba2b4c](https://github.com/stonith404/pingvin-share/commit/9ba2b4c82cdad9097b33f0451771818c7b972a6b)) -* share expiration never doesn't work if using another language than English ([a47d080](https://github.com/stonith404/pingvin-share/commit/a47d080657e1d08ef06ec7425d8bdafd5a26c24a)) - -## [0.17.2](https://github.com/stonith404/pingvin-share/compare/v0.17.1...v0.17.2) (2023-07-31) - - -### Bug Fixes - -* `ECONNREFUSED` with Docker ipv6 enabled ([c9a2a46](https://github.com/stonith404/pingvin-share/commit/c9a2a469c67d3c3cd08179b44e2bf82208f05177)) - -## [0.17.1](https://github.com/stonith404/pingvin-share/compare/v0.17.0...v0.17.1) (2023-07-30) - - -### Bug Fixes - -* rename pt-PT.ts to pt-BR.ts ([2584bb0](https://github.com/stonith404/pingvin-share/commit/2584bb0d48c761940eafc03d5cd98d47e7a5b0ae)) - -## [0.17.0](https://github.com/stonith404/pingvin-share/compare/v0.16.1...v0.17.0) (2023-07-23) - - -### Features - -* ability to define zip compression level ([7827b68](https://github.com/stonith404/pingvin-share/commit/7827b687fa022e86a2643e7a1951af8c7e80608c)) -* add note to language picker ([7f0c31c](https://github.com/stonith404/pingvin-share/commit/7f0c31c2e09b3ee9aae6c3dfb54fac2f2b1dfe23)) -* add share url alias `/s` ([231a2e9](https://github.com/stonith404/pingvin-share/commit/231a2e95b9734cf4704454e1945698753dbb378b)) -* localization ([#196](https://github.com/stonith404/pingvin-share/issues/196)) ([b9f6e3b](https://github.com/stonith404/pingvin-share/commit/b9f6e3bd08dcfc050048fba582b35958bc7b6184)) -* update default value of `maxSize` from `1073741824` to `1000000000` ([389dc87](https://github.com/stonith404/pingvin-share/commit/389dc87cac775d916d0cff9b71d3c5ff90bfe916)) - - -### Bug Fixes - -* confusion between GB and GiB ([5816b39](https://github.com/stonith404/pingvin-share/commit/5816b39fc6ef6fe6b7cf8e7925aa297561f5b796)) -* mistakes in English translations ([70b425b](https://github.com/stonith404/pingvin-share/commit/70b425b3807be79a3b518cc478996c71dffcf986)) -* wrong layout if button text is too long in modals ([f4c88ae](https://github.com/stonith404/pingvin-share/commit/f4c88aeb0823c2c18535c25fcf8e16afa8b53a56)) - -### [0.16.1](https://github.com/stonith404/pingvin-share/compare/v0.16.0...v0.16.1) (2023-07-10) - - -### Features - -* Adding reverse share ability to copy the link ([#191](https://github.com/stonith404/pingvin-share/issues/191)) ([7574eb3](https://github.com/stonith404/pingvin-share/commit/7574eb3191f21aadd64f436e9e7c78d3e3973a07)), closes [#178](https://github.com/stonith404/pingvin-share/issues/178) [#181](https://github.com/stonith404/pingvin-share/issues/181) -* Adding reverse shares' shares a clickable link ([#190](https://github.com/stonith404/pingvin-share/issues/190)) ([0276294](https://github.com/stonith404/pingvin-share/commit/0276294f5219a7edcc762bc52391b6720cfd741d)) - - -### Bug Fixes - -* set link default value to random ([#192](https://github.com/stonith404/pingvin-share/issues/192)) ([a1ea7c0](https://github.com/stonith404/pingvin-share/commit/a1ea7c026594a54eafd52f764eecbf06e1bb4d4e)), closes [#178](https://github.com/stonith404/pingvin-share/issues/178) [#181](https://github.com/stonith404/pingvin-share/issues/181) - -## [0.16.0](https://github.com/stonith404/pingvin-share/compare/v0.15.0...v0.16.0) (2023-07-09) - - -### Features - -* Adding more informations on My Shares page (table and modal) ([#174](https://github.com/stonith404/pingvin-share/issues/174)) ([1466240](https://github.com/stonith404/pingvin-share/commit/14662404614f15bc25384d924d8cb0458ab06cd8)) -* Adding the possibility of copying the link by clicking text and icons ([#171](https://github.com/stonith404/pingvin-share/issues/171)) ([348852c](https://github.com/stonith404/pingvin-share/commit/348852cfa4275f5c642669b43697f83c35333044)) - -## [0.15.0](https://github.com/stonith404/pingvin-share/compare/v0.14.1...v0.15.0) (2023-05-09) - - -### Features - -* add env variables for port, database url and data dir ([98c0de7](https://github.com/stonith404/pingvin-share/commit/98c0de78e8a73e3e5bf0928226cfb8a024b566a1)) -* add healthcheck endpoint ([5132d17](https://github.com/stonith404/pingvin-share/commit/5132d177b8ab4e00a7e701e9956222fa2352d42c)) -* allow to configure clamav with environment variables ([1df5c71](https://github.com/stonith404/pingvin-share/commit/1df5c7123e4ca8695f4f1b7d49f46cdf147fb920)) -* configure ports, db url and api url with env variables ([e5071cb](https://github.com/stonith404/pingvin-share/commit/e5071cba1204093197b72e18d024b484e72e360a)) - -### [0.14.1](https://github.com/stonith404/pingvin-share/compare/v0.14.0...v0.14.1) (2023-04-07) - - -### Bug Fixes - -* boolean config variables can't be set to false ([39a7451](https://github.com/stonith404/pingvin-share/commit/39a74510c1f00466acaead39f7bee003b3db60d7)) - -## [0.14.0](https://github.com/stonith404/pingvin-share/compare/v0.13.1...v0.14.0) (2023-04-01) - - -### Features - -* **share, config:** more variables, placeholder and reset default ([#132](https://github.com/stonith404/pingvin-share/issues/132)) ([beece56](https://github.com/stonith404/pingvin-share/commit/beece56327da141c222fd9f5259697df6db9347a)) - - -### Bug Fixes - -* bool config variable can't be changed ([0e5c673](https://github.com/stonith404/pingvin-share/commit/0e5c67327092e4751208e559a2b0d5ee2b91b6e3)) - -### [0.13.1](https://github.com/stonith404/pingvin-share/compare/v0.13.0...v0.13.1) (2023-03-14) - - -### Bug Fixes - -* empty file can't be uploaded in chrome ([9f2097e](https://github.com/stonith404/pingvin-share/commit/9f2097e788dfb79c2f95085025934c3134a3eb38)) - -## [0.13.0](https://github.com/stonith404/pingvin-share/compare/v0.12.1...v0.13.0) (2023-03-14) - - -### Features - -* add preview modal ([c807d20](https://github.com/stonith404/pingvin-share/commit/c807d208d8f0518f6390f9f0f3d0eb00c12d213b)) -* sort shared files ([b25c30d](https://github.com/stonith404/pingvin-share/commit/b25c30d1ed57230096b17afaf8545c7b0ef2e4b1)) - - -### Bug Fixes - -* replace "pingvin share" with dynamic app name ([f55aa80](https://github.com/stonith404/pingvin-share/commit/f55aa805167f31864cb07e269a47533927cb533c)) -* set password manually input not shown ([8ff417a](https://github.com/stonith404/pingvin-share/commit/8ff417a013a45a777308f71c4f0d1817bfeed6be)) -* show line breaks in txt preview ([37e765d](https://github.com/stonith404/pingvin-share/commit/37e765ddc7b19554bc6fb50eb969984b58bf3cc5)) -* upload file if it is 0 bytes ([f82099f](https://github.com/stonith404/pingvin-share/commit/f82099f36eb4699385fc16dfb0e0c02e5d55b1e3)) - -### [0.12.1](https://github.com/stonith404/pingvin-share/compare/v0.12.0...v0.12.1) (2023-03-11) - - -### Bug Fixes - -* 48px icon does not update ([753dbe8](https://github.com/stonith404/pingvin-share/commit/753dbe83b770814115a2576c7a50e1bac9dc8ce1)) - -## [0.12.0](https://github.com/stonith404/pingvin-share/compare/v0.11.1...v0.12.0) (2023-03-10) - - -### Features - -* ability to change logo in frontend ([8403d7e](https://github.com/stonith404/pingvin-share/commit/8403d7e14ded801c3842a9b3fd87c3f6824c519e)) - - -### Bug Fixes - -* crypto is not defined ([8f71fd3](https://github.com/stonith404/pingvin-share/commit/8f71fd343506506532c1a24a4c66a16b1021705f)) -* home page shown even if disabled ([3ad6b03](https://github.com/stonith404/pingvin-share/commit/3ad6b03b6bd80168870049582683077b689fa548)) - -### [0.11.1](https://github.com/stonith404/pingvin-share/compare/v0.11.0...v0.11.1) (2023-03-05) - - -### Bug Fixes - -* old config variable prevents to create a share ([8b77e81](https://github.com/stonith404/pingvin-share/commit/8b77e81d4c1b8a2bf798595f5a66079c40734e09)) - -## [0.11.0](https://github.com/stonith404/pingvin-share/compare/v0.10.2...v0.11.0) (2023-03-04) - - -### Features - -* custom branding ([#112](https://github.com/stonith404/pingvin-share/issues/112)) ([fddad3e](https://github.com/stonith404/pingvin-share/commit/fddad3ef708c27052a8bf46f3076286d102f6d7e)) -* invite new user with email ([f984050](https://github.com/stonith404/pingvin-share/commit/f9840505b82fcb04364a79576f186b76cc75f5c0)) - - -### Bug Fixes - -* frontend error when user deleted ([0317f3a](https://github.com/stonith404/pingvin-share/commit/0317f3a508dc88ffe2c33413704f7df03a2372ea)) - -### [0.10.2](https://github.com/stonith404/pingvin-share/compare/v0.10.1...v0.10.2) (2023-02-13) - - -### Bug Fixes - -* pdf preview tries to render on server ([c3af0fe](https://github.com/stonith404/pingvin-share/commit/c3af0fe097582f69b63ed1ad18fb71bff334d32a)) - -### [0.10.1](https://github.com/stonith404/pingvin-share/compare/v0.10.0...v0.10.1) (2023-02-12) - - -### Bug Fixes - -* non administrator user redirection error while setup isn't finished ([dc8cf3d](https://github.com/stonith404/pingvin-share/commit/dc8cf3d5ca6b4f8a8f243b8e0b05e09738cf8b61)) -* setup wizard doesn't redirect after completion ([7cd9dff](https://github.com/stonith404/pingvin-share/commit/7cd9dff637900098c9f6e46ccade37283d47321b)) - -## [0.10.0](https://github.com/stonith404/pingvin-share/compare/v0.9.0...v0.10.0) (2023-02-10) - - -### ⚠ BREAKING CHANGES - -* reset password with email - -### Features - -* allow multiple shares with one reverse share link ([ccdf8ea](https://github.com/stonith404/pingvin-share/commit/ccdf8ea3ae1e7b8520c5b1dd9bea18b1b3305f35)) -* **frontend:** server side rendering to improve performance ([38de022](https://github.com/stonith404/pingvin-share/commit/38de022215a9b99c2eb36654f8dbb1e17ca87aba)) -* reset password with email ([5d1a7f0](https://github.com/stonith404/pingvin-share/commit/5d1a7f0310df2643213affd2a0d1785b7e0af398)) - - -### Bug Fixes - -* delete all shares of reverse share ([86a7379](https://github.com/stonith404/pingvin-share/commit/86a737951951c911abd7967d76cb253c4335cb0c)) -* invalid redirection after jwt expiry ([82f204e](https://github.com/stonith404/pingvin-share/commit/82f204e8a93e3113dcf65b1881d4943a898602eb)) -* setup status doesn't change ([064ef38](https://github.com/stonith404/pingvin-share/commit/064ef38d783b3f351535c2911eb451efd9526d71)) -* share creation without reverseShareToken ([b966270](https://github.com/stonith404/pingvin-share/commit/b9662701c42fe6771c07acb869564031accb2932)) -* share fails if a share was created with a reverse share link recently ([edc10b7](https://github.com/stonith404/pingvin-share/commit/edc10b72b7884c629a8417c3c82222b135ef7653)) - -## [0.9.0](https://github.com/stonith404/pingvin-share/compare/v0.8.0...v0.9.0) (2023-01-31) - - -### Features - -* direct file link ([008df06](https://github.com/stonith404/pingvin-share/commit/008df06b5cf48872d4dd68df813370596a4fd468)) -* file preview ([91a6b3f](https://github.com/stonith404/pingvin-share/commit/91a6b3f716d37d7831e17a7be1cdb35cb23da705)) - - -### Bug Fixes - -* improve send test email UX ([233c26e](https://github.com/stonith404/pingvin-share/commit/233c26e5cfde59e7d51023ef9901dec2b84a4845)) - -## [0.8.0](https://github.com/stonith404/pingvin-share/compare/v0.7.0...v0.8.0) (2023-01-26) - - -### Features - -* reverse shares ([#86](https://github.com/stonith404/pingvin-share/issues/86)) ([4a5fb54](https://github.com/stonith404/pingvin-share/commit/4a5fb549c6ac808261eb65d28db69510a82efd00)) - - -### Bug Fixes - -* Add meta tags to new pages ([bb64f6c](https://github.com/stonith404/pingvin-share/commit/bb64f6c33fc5c5e11f2c777785c96a74b57dfabc)) -* admin users were created while the setup wizard wasn't finished ([ad92cfc](https://github.com/stonith404/pingvin-share/commit/ad92cfc852ca6aa121654d747a02628492ae5b89)) - -## [0.7.0](https://github.com/stonith404/pingvin-share/compare/v0.6.1...v0.7.0) (2023-01-13) - - -### Features - -* add ClamAV to scan for malicious files ([76088cc](https://github.com/stonith404/pingvin-share/commit/76088cc76aedae709f06deaee2244efcf6a22bed)) - - -### Bug Fixes - -* invalid github release link on admin page ([349bf47](https://github.com/stonith404/pingvin-share/commit/349bf475cc7fc1141dbd2a9bd2f63153c4d5b41b)) - -### [0.6.1](https://github.com/stonith404/pingvin-share/compare/v0.6.0...v0.6.1) (2023-01-11) - - -### Features - -* delete all sessions if password was changed ([02e41e2](https://github.com/stonith404/pingvin-share/commit/02e41e243768de34de1bdc8833e83f60db530e55)) - - -### Bug Fixes - -* shareUrl uses wrong origin ([f1b44f8](https://github.com/stonith404/pingvin-share/commit/f1b44f87fa64d3b21ca92c9068cb352d0ad51bc0)) -* update password doesn't work ([74e8956](https://github.com/stonith404/pingvin-share/commit/74e895610642552c98c0015d0f8347735aaed457)) - -## [0.6.0](https://github.com/stonith404/pingvin-share/compare/v0.5.1...v0.6.0) (2023-01-09) - - -### Features - -* chunk uploads ([#76](https://github.com/stonith404/pingvin-share/issues/76)) ([653d72b](https://github.com/stonith404/pingvin-share/commit/653d72bcb958268e2f23efae94cccb72faa745af)) - - -### Bug Fixes - -* access token refreshes even it is still valid ([c8ad222](https://github.com/stonith404/pingvin-share/commit/c8ad2225e3c9ca79fea494d538b67797fbc7f6ae)) -* error message typo ([72c8081](https://github.com/stonith404/pingvin-share/commit/72c8081e7c135ab1f600ed7e3d7a0bf03dabde34)) -* migration for v0.5.1 ([f2d4895](https://github.com/stonith404/pingvin-share/commit/f2d4895e50d3da82cef68858752fb7f6293e7a20)) -* refresh token expires after 1 day instead of 3 months ([a5bef5d](https://github.com/stonith404/pingvin-share/commit/a5bef5d4a4ae75447ca1f65259c5541edfc87dd8)) - -### [0.5.1](https://github.com/stonith404/pingvin-share/compare/v0.5.0...v0.5.1) (2023-01-04) - - -### Features - -* show version and show button if new release is available on admin page ([71658ad](https://github.com/stonith404/pingvin-share/commit/71658ad39d7e3638de659e8230fad4e05f60fdd8)) -* use cookies for authentication ([faea1ab](https://github.com/stonith404/pingvin-share/commit/faea1abcc4b533f391feaed427e211fef9166fe4)) - - -### Bug Fixes - -* email configuration updated without restart ([1117465](https://github.com/stonith404/pingvin-share/commit/11174656e425c4be60e4f7b1ea8463678e5c60d2)) - -## [0.5.0](https://github.com/stonith404/pingvin-share/compare/v0.4.0...v0.5.0) (2022-12-30) - - -### Features - -* custom mail subject ([cabaee5](https://github.com/stonith404/pingvin-share/commit/cabaee588b50877872d210c870bfb9c95b541921)) -* improve config UI ([#69](https://github.com/stonith404/pingvin-share/issues/69)) ([5bc4f90](https://github.com/stonith404/pingvin-share/commit/5bc4f902f6218a09423491404806a4b7fb865c98)) -* manually switch color scheme ([ef21bac](https://github.com/stonith404/pingvin-share/commit/ef21bac59b11dc68649ab3b195dcb89d2b192e7b)) - - -### Bug Fixes - -* refresh token gets deleted on session end ([e5b50f8](https://github.com/stonith404/pingvin-share/commit/e5b50f855c02aa4b5c9ee873dd5a7ab25759972d)) - -## [0.4.0](https://github.com/stonith404/pingvin-share/compare/v0.3.6...v0.4.0) (2022-12-21) - - -### Features - -* custom email message ([0616a68](https://github.com/stonith404/pingvin-share/commit/0616a68bd2e0c9cb559ebdf294e353dd3f69c9a5)) -* TOTP (two-factor) Authentication ([#55](https://github.com/stonith404/pingvin-share/issues/55)) ([16480f6](https://github.com/stonith404/pingvin-share/commit/16480f6e9572011fadeb981a388b92cb646fa6d9)) - -### [0.3.6](https://github.com/stonith404/pingvin-share/compare/v0.3.5...v0.3.6) (2022-12-13) - - -### Features - -* add description field to share ([8728fa5](https://github.com/stonith404/pingvin-share/commit/8728fa5207524e9aee26d68eafe1b6fff367d749)) - - -### Bug Fixes - -* remove dot in email link ([9b0c08d](https://github.com/stonith404/pingvin-share/commit/9b0c08d0cdeeeef217ccba57f593fea9d8858371)) -* rerange accordion items ([844c47e](https://github.com/stonith404/pingvin-share/commit/844c47e1290fb0f7dedb41a18be59ed5ab83dabc)) - -### [0.3.5](https://github.com/stonith404/pingvin-share/compare/v0.3.4...v0.3.5) (2022-12-11) - - -### Features - -* upload 3 files at same time ([d010a8a](https://github.com/stonith404/pingvin-share/commit/d010a8a2d366708b1bb5088e9c1e9f9378d3e023)) - - -### Bug Fixes - -* jobs never get executed ([05cbb7b](https://github.com/stonith404/pingvin-share/commit/05cbb7b27ef98a3a80dd9edc318f1dcc9a8bd442)) -* only create zip if more than one file is in the share ([3d1d4d0](https://github.com/stonith404/pingvin-share/commit/3d1d4d0fc7c0351724387c3721280c334ae94d98)) -* remove unnecessary port expose ([084e911](https://github.com/stonith404/pingvin-share/commit/084e911eed95eb22fea0bf185803ba32c3eda1a9)) -* setup wizard table doesn't take full width ([9798e26](https://github.com/stonith404/pingvin-share/commit/9798e26872064edc1049138cf73479b1354a43ed)) -* use node slim to fix arm builds ([797f893](https://github.com/stonith404/pingvin-share/commit/797f8938cac9cc3bb788f632d97eba5c49fe98a5)) -* zip doesn't contain file extension ([5b01108](https://github.com/stonith404/pingvin-share/commit/5b0110877745f1fcde4952737a93c07ef4a2a92d)) - -### [0.3.4](https://github.com/stonith404/pingvin-share/compare/v0.3.3...v0.3.4) (2022-12-10) - - -### Bug Fixes - -* show alternative to copy button if site is not using https ([7e877ce](https://github.com/stonith404/pingvin-share/commit/7e877ce9f4b82d61c9b238e17def9f4c29e7aeb8)) -* sign up page available when registration is disabled ([c8a4521](https://github.com/stonith404/pingvin-share/commit/c8a4521677280d6aba89d293a1fe0c38adf9f92c)) -* tables on mobile ([b1bfb09](https://github.com/stonith404/pingvin-share/commit/b1bfb09dfd5c90cc18847470a9ce1ce8397c1476)) - -### [0.3.3](https://github.com/stonith404/pingvin-share/compare/v0.3.2...v0.3.3) (2022-12-08) - - -### Features - -* add support for different email and user ([888a0c5](https://github.com/stonith404/pingvin-share/commit/888a0c5fafc51b6872ed71e37d4b40c9bf6a07f1)) - - -### Bug Fixes - -* allow empty strings in config variable ([b8172ef](https://github.com/stonith404/pingvin-share/commit/b8172efd59fb3271ab9b818b13a7003342b2cebd)) -* improve admin dashboard color and layout ([a545c44](https://github.com/stonith404/pingvin-share/commit/a545c444261c90105dcb165ebcf4b26634e729ca)) -* obscure critical config variables ([bfb0d15](https://github.com/stonith404/pingvin-share/commit/bfb0d151ea2ba125e536a16b1873e143a67e9f64)) -* obscured text length ([cbe37c6](https://github.com/stonith404/pingvin-share/commit/cbe37c679853ecef1522ed213e4cac5defd5b45a)) -* space character in email ([907e56a](https://github.com/stonith404/pingvin-share/commit/907e56af0faccdbc8d7f5ab3418a4ad71ff849f5)) - -### [0.3.2](https://github.com/stonith404/pingvin-share/compare/v0.3.1...v0.3.2) (2022-12-07) - - -### Bug Fixes - -* make share password optional ([57cb683](https://github.com/stonith404/pingvin-share/commit/57cb683c64eaedec2697ea6863948bd2ae68dd75)) -* unauthenticated dialog not shown ([4a016ed](https://github.com/stonith404/pingvin-share/commit/4a016ed57db526ee900c567f7b7f0991f948c631)) -* use session storage for share token ([5ea63fb](https://github.com/stonith404/pingvin-share/commit/5ea63fb60be0c508c38ba228cc8ac6dd7b403aac)) - -### [0.3.1](https://github.com/stonith404/pingvin-share/compare/v0.3.0...v0.3.1) (2022-12-05) - - -### Bug Fixes - -* dropzone rejection on chrome ([75f57a4](https://github.com/stonith404/pingvin-share/commit/75f57a4e57fb13cc62e87428e8302b453ea6b44b)) - -## [0.3.0](https://github.com/stonith404/pingvin-share/compare/v0.2.0...v0.3.0) (2022-12-05) - - -### Features - -* add add new config strategy to frontend ([493705e](https://github.com/stonith404/pingvin-share/commit/493705e4ef21cb638620b0037b9ff2cec8046c95)) -* add administrator guard ([13f98cc](https://github.com/stonith404/pingvin-share/commit/13f98cc32c804c786c71b10dc4cf029d7795be76)) -* add job that deleted temporary files ([b649d8b](https://github.com/stonith404/pingvin-share/commit/b649d8bf8e849aff3f350e3c5fd0151a063b9706)) -* add new config strategy to backend ([1b5e53f](https://github.com/stonith404/pingvin-share/commit/1b5e53ff7ee00228eda6dc5c62d5cd8c3752b03b)) -* add setup wizard ([b579b8f](https://github.com/stonith404/pingvin-share/commit/b579b8f3309e2d7070e6a82c5da76ab8029bee11)) -* add user management ([7a3967f](https://github.com/stonith404/pingvin-share/commit/7a3967fd6f76a03461d05e962e82fe5130528ca5)) -* add user operations to backend ([31b3f6c](https://github.com/stonith404/pingvin-share/commit/31b3f6cb2fc662623df92cdbaf803f1b98a696ae)) - - -### Bug Fixes - -* convert async function to sync function ([1dbfe0b](https://github.com/stonith404/pingvin-share/commit/1dbfe0bbc9821bbee02220484c87cf9fe12fd033)) -* database migration by adding a username ([e9526fc](https://github.com/stonith404/pingvin-share/commit/e9526fc0390cc8ba70c824370041ea9aaf6f9ef9)) -* docker build ([e958a83](https://github.com/stonith404/pingvin-share/commit/e958a83b87a452e42fb38c12d4b11d71b2323c2d)) -* share password validation ([c795b98](https://github.com/stonith404/pingvin-share/commit/c795b988df437c85efb91e0f6f8ec782f38dbe3d)) -* unable to update user privileges ([d4a0f1a](https://github.com/stonith404/pingvin-share/commit/d4a0f1a4f16b7980fb244a4e582ceeb9bfaff877)) - -## [0.2.0](https://github.com/stonith404/pingvin-share/compare/v0.1.1...v0.2.0) (2022-11-13) - - -### Features - -* add email recepients functionality ([32ad43a](https://github.com/stonith404/pingvin-share/commit/32ad43ae27a29b946bfba0040cac7eb158c84553)) - - -### Bug Fixes - -* add public userDTO to prevent confusion ([0efd2d8](https://github.com/stonith404/pingvin-share/commit/0efd2d8bf96506cf7d7dc2dc3164a8d59009cec7)) -* email sending when not signed in ([32eaee4](https://github.com/stonith404/pingvin-share/commit/32eaee42363250defa92913c738a2702ba3e2693)) -* hide and disallow email recipients if disabled ([34db3ae](https://github.com/stonith404/pingvin-share/commit/34db3ae2a997498edaa70404807d0e770dad6edb)) - -### [0.1.1](https://github.com/stonith404/pingvin-share/compare/v0.1.0...v0.1.1) (2022-10-31) - - -### Bug Fixes - -* add `ALLOW_UNAUTHENTICATED_SHARES` to docker compose file ([599d8ca](https://github.com/stonith404/pingvin-share/commit/599d8caa31dc018c14c959d6602ac652eaef5da2)) -* only log jobs if they actually did something ([e40cc0f](https://github.com/stonith404/pingvin-share/commit/e40cc0f48beec09e18738de1b445cabd9daab09b)) -* share finishes before all files are uploaded ([99de4e5](https://github.com/stonith404/pingvin-share/commit/99de4e57e18df54596e168a57b94c55d7a834472)) - -## [0.1.0](https://github.com/stonith404/pingvin-share/compare/v0.0.1...v0.1.0) (2022-10-29) - - -### Features - -* add rate limiting ([712cfe6](https://github.com/stonith404/pingvin-share/commit/712cfe625a19dc9790cda5fbc2843fed0836b860)) -* allow unauthenticated uploads ([84d29df](https://github.com/stonith404/pingvin-share/commit/84d29dff68d0ea9d76d9a35f9fb7dff95d3dda1b)) -* **frontend:** remove footer ([c52a4d5](https://github.com/stonith404/pingvin-share/commit/c52a4d5e3ad717a10d15b7fe1dbf359b041c0976)) - - -### Bug Fixes - -* infinite loading when file size is small ([c2ddce6](https://github.com/stonith404/pingvin-share/commit/c2ddce62038e561d292f23fc6089562e64f1ffe9)) -* only show not signed in warning if not signed in ([c6e1f07](https://github.com/stonith404/pingvin-share/commit/c6e1f07f51e9cdd914bb70fb19dd81b90a470563)) -* opt out of static site generation to enable `publicRuntimeConfig` ([239b18c](https://github.com/stonith404/pingvin-share/commit/239b18cdae6367322bcdacb6b2bbaa1028295cc4)) -* visitor count doesn't get incremented ([c8021a4](https://github.com/stonith404/pingvin-share/commit/c8021a42b7fb094e587325bf855fc3133b6b96b0)) - -### [0.0.1](https://github.com/stonith404/pingvin-share/compare/4bab33ad8a79302fd94c6d92a3ddf87cdff8b214...v0.0.1) (2022-10-17) - - -### Features - -* add `linux/arm/v7` arch for docker image ([d9e5c28](https://github.com/stonith404/pingvin-share/commit/d9e5c286e3b53834276511227f219d0858ca0829)) -* add progress indicator for uploading files ([8c84d50](https://github.com/stonith404/pingvin-share/commit/8c84d50159bdabc75a1199ffdf372b9586f67371)) -* Added "never" expiration date ([56349c6](https://github.com/stonith404/pingvin-share/commit/56349c6f4cc739d07bcf8ad862b0868e09342883)) -* automatically detect hour format ([4e3f6be](https://github.com/stonith404/pingvin-share/commit/4e3f6be8e322929b83a35c7789078260dca9eb58)) -* extract logo to component ([58efc48](https://github.com/stonith404/pingvin-share/commit/58efc48ffa559b4bfa03e381bccb552c8fb830b9)) -* improve share security ([6358ac3](https://github.com/stonith404/pingvin-share/commit/6358ac3918d1af1cc05aca634d9d32a8f35d251f)) -* put db and uploads in same folder ([80cdcda](https://github.com/stonith404/pingvin-share/commit/80cdcda93c385a8f5c1e22c7b84740f5d8119ef1)) -* remove appwrite and add nextjs backend ([4bab33a](https://github.com/stonith404/pingvin-share/commit/4bab33ad8a79302fd94c6d92a3ddf87cdff8b214)) -* remove postgres & use a single docker container ([388ac39](https://github.com/stonith404/pingvin-share/commit/388ac395ba85aae8a91ddfb5f5637a80a3e6f16b)) -* replace tooltip with toast ([a33b5b3](https://github.com/stonith404/pingvin-share/commit/a33b5b37d92071e643a0bf78a9d6ecf29bebc65a)) -* use system color theme ([d902aae](https://github.com/stonith404/pingvin-share/commit/d902aae03ff33d39c733cf1bce88ae58ff4cd888)) - - -### Bug Fixes - -* account dropdown on mobile ([caed1f4](https://github.com/stonith404/pingvin-share/commit/caed1f40ad2e32f241d0254652b42e19d8ec18d5)) -* action docker file path ([e818a29](https://github.com/stonith404/pingvin-share/commit/e818a2944260dd3e773d6fdf187d21ebffb9c561)) -* actions syntax error ([ce6568d](https://github.com/stonith404/pingvin-share/commit/ce6568d2b836965feb4250cec981bc75eb273fdd)) -* add error handling for uploading ([e2b3e6a](https://github.com/stonith404/pingvin-share/commit/e2b3e6a1e86af95e1d9d20e7dd179c1a0ee6109f)) -* add rule to check if user is owner of share ([2c47b2a](https://github.com/stonith404/pingvin-share/commit/2c47b2a28468dd6beaf88892aaa867ca579905ca)) -* delete files when deleting share manually ([ffd538f](https://github.com/stonith404/pingvin-share/commit/ffd538f1408733ae3ba36bdd3a57995986fb0fad)) -* delete share if user deleted ([b57092c](https://github.com/stonith404/pingvin-share/commit/b57092ce3ee1806922c9a1e1959d66d752b70067)) -* dto returns ([02beb66](https://github.com/stonith404/pingvin-share/commit/02beb669107f022cf6bd6cf072cf499bbc92914c)) -* error when refresh token is expired ([0823d28](https://github.com/stonith404/pingvin-share/commit/0823d28e230642e49553519e7883764637766773)) -* file names with special characters ([bfbf3d8](https://github.com/stonith404/pingvin-share/commit/bfbf3d8130c07a4db4026cbf6a1fae78ca409fb8)) -* get theme on inital load ([a40c2de](https://github.com/stonith404/pingvin-share/commit/a40c2ded823e391c95161feda3a5e8799ca9d2d1)) -* improve failed upload error handling ([1259922](https://github.com/stonith404/pingvin-share/commit/1259922847170fe7deb480e117d90e0bf0b31b0a)) -* my shares doesn't make an api request ([247ce92](https://github.com/stonith404/pingvin-share/commit/247ce92744b64beff2b7bb19c9ae3a3d1e724159)) -* refresh token on visit after 15 minutes ([d153f20](https://github.com/stonith404/pingvin-share/commit/d153f202e6ea07982a098692817d377801f5adf3)) -* remove build target linux/arm/v7 as prisma doesn't support it ([c16cbb3](https://github.com/stonith404/pingvin-share/commit/c16cbb3f42745bff3910433e68416b9f84faaff1)) -* remove filetype from file list ([68ce8af](https://github.com/stonith404/pingvin-share/commit/68ce8af197598f7c4a729bab8081904f01002b6b)) -* remove unused env variable ([cc17e7e](https://github.com/stonith404/pingvin-share/commit/cc17e7e641806b7fef2dbeb19e545e8e9177f769)) -* security accerdion ([8c2c930](https://github.com/stonith404/pingvin-share/commit/8c2c930153e0a271acf4896276b820c1ad6c0b8b)) -* share not found if unauthenticated ([aa5b125](https://github.com/stonith404/pingvin-share/commit/aa5b12536723c1697a0e876f1f4f901cb4d4b33e)) -* space in actions ([dcd39ee](https://github.com/stonith404/pingvin-share/commit/dcd39ee612e048437ed1b11486700cb91e7d377c)) -* spacing issues ([43519d9](https://github.com/stonith404/pingvin-share/commit/43519d9f26a4d26e3d6132efe8c88d0d107540ce)) -* system test github action ([a2c9755](https://github.com/stonith404/pingvin-share/commit/a2c9755756932086c63a282330f80e410137b1d9)) -* upload volume path ([7522221](https://github.com/stonith404/pingvin-share/commit/7522221ee163cb0bd6144e7b924c77065f223fb9)) -* wrong environment configuration for `ALLOW_REGISTRATION` ([759db40](https://github.com/stonith404/pingvin-share/commit/759db40ac9f42ff71a795ceec521a7f9531d71c9)) - diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 1d47183..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,95 +0,0 @@ -_Read this in another language: [Spanish](/docs/CONTRIBUTING.es.md), [English](/CONTRIBUTING.md), [Simplified Chinese](/docs/CONTRIBUTING.zh-cn.md)_ - ---- - -# Contributing - -We would ❤️ for you to contribute to Pingvin Share and help make it better! All contributions are welcome, including issues, suggestions, pull requests and more. - -## Getting started - -You've found a bug, have suggestion or something else, just create an issue on GitHub and we can get in touch 😊. - -## Submit a Pull Request - -Before you submit the pull request for review please ensure that - -- The pull request naming follows the [Conventional Commits specification](https://www.conventionalcommits.org): - - `[optional scope]: ` - - example: - - ``` - feat(share): add password protection - ``` - - When `TYPE` can be: - - - **feat** - is a new feature - - **doc** - documentation only changes - - **fix** - a bug fix - - **refactor** - code change that neither fixes a bug nor adds a feature - -- Your pull request has a detailed description -- You run `npm run format` to format the code - -
- Don't know how to create a pull request? Learn how to create a pull request - -1. Create a fork of the repository by clicking on the `Fork` button in the Pingvin Share repository - -2. Clone your fork to your machine with `git clone` - -``` -$ git clone https://github.com/[your_username]/pingvin-share -``` - -3. Work - commit - repeat - -4. Push changes to GitHub - -``` -$ git push origin [name_of_your_new_branch] -``` - -5. Submit your changes for review - If you go to your repository on GitHub, you'll see a `Compare & pull request` button. Click on that button. -6. Start a Pull Request -7. Now submit the pull request and click on `Create pull request`. -8. Get a code review approval/reject - -
- -## Setup project - -Pingvin Share consists of a frontend and a backend. - -### Backend - -The backend is built with [Nest.js](https://nestjs.com) and uses Typescript. - -#### Setup - -1. Open the `backend` folder -2. Install the dependencies with `npm install` -3. Push the database schema to the database by running `npx prisma db push` -4. Seed the database with `npx prisma db seed` -5. Start the backend with `npm run dev` - -### Frontend - -The frontend is built with [Next.js](https://nextjs.org) and uses Typescript. - -#### Setup - -1. Start the backend first -2. Open the `frontend` folder -3. Install the dependencies with `npm install` -4. Start the frontend with `npm run dev` - -You're all set! - -### Testing - -At the moment we only have system tests for the backend. To run these tests, run `npm run test:system` in the backend folder. diff --git a/Caddyfile b/Caddyfile deleted file mode 100644 index e266b80..0000000 --- a/Caddyfile +++ /dev/null @@ -1,15 +0,0 @@ -:3000 { - # Reverse proxy for /api - reverse_proxy /api/* http://localhost:8080 { - header_up X-Forwarded-Host {host}:{server_port} - header_up X-Forwarded-For {remote_host} - header_up X-Forwarded-Proto {scheme} - } - - # Reverse proxy for all other requests - reverse_proxy http://localhost:3333 { - header_up X-Forwarded-Host {host}:{server_port} - header_up X-Forwarded-For {remote_host} - header_up X-Forwarded-Proto {scheme} - } -} diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 5479c9b..0000000 --- a/Dockerfile +++ /dev/null @@ -1,58 +0,0 @@ -# Stage 1: Frontend dependencies -FROM node:20-alpine AS frontend-dependencies -WORKDIR /opt/app -COPY frontend/package.json frontend/package-lock.json ./ -RUN npm ci - -# Stage 2: Build frontend -FROM node:20-alpine AS frontend-builder -WORKDIR /opt/app -COPY ./frontend . -COPY --from=frontend-dependencies /opt/app/node_modules ./node_modules -RUN npm run build - -# Stage 3: Backend dependencies -FROM node:20-alpine AS backend-dependencies -RUN apk add --no-cache python3 -WORKDIR /opt/app -COPY backend/package.json backend/package-lock.json ./ -RUN npm ci - -# Stage 4: Build backend -FROM node:20-alpine AS backend-builder -WORKDIR /opt/app -COPY ./backend . -COPY --from=backend-dependencies /opt/app/node_modules ./node_modules -RUN npx prisma generate -RUN npm run build && npm prune --production - -# Stage 5: Final image -FROM node:20-alpine AS runner -ENV NODE_ENV=docker - -RUN apk update --no-cache \ - && apk upgrade --no-cache \ - && apk add --no-cache curl caddy - -WORKDIR /opt/app/frontend -COPY --from=frontend-builder /opt/app/public ./public -COPY --from=frontend-builder /opt/app/.next/standalone ./ -COPY --from=frontend-builder /opt/app/.next/static ./.next/static -COPY --from=frontend-builder /opt/app/public/img /tmp/img - -WORKDIR /opt/app/backend -COPY --from=backend-builder /opt/app/node_modules ./node_modules -COPY --from=backend-builder /opt/app/dist ./dist -COPY --from=backend-builder /opt/app/prisma ./prisma -COPY --from=backend-builder /opt/app/package.json ./ - -COPY ./Caddyfile /etc/caddy/Caddyfile -COPY ./scripts/docker-entrypoint.sh /opt/app/docker-entrypoint.sh - -WORKDIR /opt/app - -EXPOSE 3000 - -HEALTHCHECK --interval=10s --timeout=3s CMD curl -f http://localhost:3000/api/health || exit 1 - -CMD ["sh", "/opt/app/docker-entrypoint.sh"] \ No newline at end of file diff --git a/How to/contribute/index.html b/How to/contribute/index.html new file mode 100644 index 0000000..0604647 --- /dev/null +++ b/How to/contribute/index.html @@ -0,0 +1,84 @@ + + + + + +Contributing | Pingvin Share + + + + +

Contributing

+

We would ❤️ for you to contribute to Pingvin Share and help make it better! All contributions are welcome, including issues, suggestions, pull requests and more.

+

Getting started

+

You've found a bug, have suggestion or something else, just create an issue on GitHub and we can get in touch 😊.

+

Submit a Pull Request

+

Before you submit the pull request for review please ensure that

+
    +
  • +

    The pull request naming follows the Conventional Commits specification:

    +

    <type>[optional scope]: <description>

    +

    example:

    +
    feat(share): add password protection
    +

    When TYPE can be:

    +
      +
    • feat - is a new feature
    • +
    • doc - documentation only changes
    • +
    • fix - a bug fix
    • +
    • refactor - code change that neither fixes a bug nor adds a feature
    • +
    +
  • +
  • +

    Your pull request has a detailed description

    +
  • +
  • +

    You run npm run format to format the code

    +
  • +
+
Don't know how to create a pull request? Learn how to create a pull request
    +
  1. +

    Create a fork of the repository by clicking on the Fork button in the Pingvin Share repository

    +
  2. +
  3. +

    Clone your fork to your machine with git clone

    +
  4. +
$ git clone https://github.com/[your_username]/pingvin-share
    +
  1. +

    Work - commit - repeat

    +
  2. +
  3. +

    Push changes to GitHub

    +
  4. +
$ git push origin [name_of_your_new_branch]
    +
  1. Submit your changes for review +If you go to your repository on GitHub, you'll see a Compare & pull request button. Click on that button.
  2. +
  3. Start a Pull Request
  4. +
  5. Now submit the pull request and click on Create pull request.
  6. +
  7. Get a code review approval/reject
  8. +
+

Setup project

+

Pingvin Share consists of a frontend and a backend.

+

Backend

+

The backend is built with Nest.js and uses Typescript.

+

Setup

+
    +
  1. Open the backend folder
  2. +
  3. Install the dependencies with npm install
  4. +
  5. Push the database schema to the database by running npx prisma db push
  6. +
  7. Seed the database with npx prisma db seed
  8. +
  9. Start the backend with npm run dev
  10. +
+

Frontend

+

The frontend is built with Next.js and uses Typescript.

+

Setup

+
    +
  1. Start the backend first
  2. +
  3. Open the frontend folder
  4. +
  5. Install the dependencies with npm install
  6. +
  7. Start the frontend with npm run dev
  8. +
+

You're all set!

+

Testing

+

At the moment we only have system tests for the backend. To run these tests, run npm run test:system in the backend folder.

+ + \ No newline at end of file diff --git a/How to/translate/index.html b/How to/translate/index.html new file mode 100644 index 0000000..9ac13c3 --- /dev/null +++ b/How to/translate/index.html @@ -0,0 +1,17 @@ + + + + + +Translating | Pingvin Share + + + + +

Translating

+

You can help to translate Pingvin Share into your language. +On Crowdin you can easily translate Pingvin Share online.

+

Is your language not on Crowdin? Feel free to Request it.

+

Any issues while translating? Feel free to participate in the Localization discussion.

+ + \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index cd8a03a..0000000 --- a/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -BSD 2-Clause License - -Copyright (c) 2022, Elias Schneider -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md deleted file mode 100644 index 516e2c4..0000000 --- a/README.md +++ /dev/null @@ -1,174 +0,0 @@ -#

Pingvin Share
- -[![](https://dcbadge.limes.pink/api/server/wHRQ9nFRcK)](https://discord.gg/wHRQ9nFRcK) [![](https://img.shields.io/badge/Crowdin-2E3340.svg?style=for-the-badge&logo=Crowdin&logoColor=white)](https://crowdin.com/project/pingvin-share) [![](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#white)](https://github.com/sponsors/stonith404) - -_Read this in another language: [Spanish](/docs/README.es.md), [English](/README.md), [简体中文](/docs/README.zh-cn.md), [日本語](/docs/README.ja-jp.md)_ - ---- - -Pingvin Share is self-hosted file sharing platform and an alternative for WeTransfer. - -## ✨ Features - -- Share files using a link -- Unlimited file size (restricted only by disk space) -- Set an expiration date for shares -- Secure shares with visitor limits and passwords -- Email recipients -- Integration with ClamAV for security scans - -## 🐧 Get to know Pingvin Share - -- [Demo](https://pingvin-share.dev.eliasschneider.com) -- [Review by DB Tech](https://www.youtube.com/watch?v=rWwNeZCOPJA) - - - -## ⌨️ Setup - -> Note: Pingvin Share is in its early stages and may contain bugs. - -### Installation with Docker (recommended) - -1. Download the `docker-compose.yml` file -2. Run `docker compose up -d` - -The website is now listening on `http://localhost:3000`, have fun with Pingvin Share 🐧! - -### Stand-alone Installation - -Required tools: - -- [Node.js](https://nodejs.org/en/download/) >= 16 -- [Git](https://git-scm.com/downloads) -- [pm2](https://pm2.keymetrics.io/) for running Pingvin Share in the background - -```bash -git clone https://github.com/stonith404/pingvin-share -cd pingvin-share - -# Checkout the latest version -git fetch --tags && git checkout $(git describe --tags `git rev-list --tags --max-count=1`) - -# Start the backend -cd backend -npm install -npm run build -pm2 start --name="pingvin-share-backend" npm -- run prod - -# Start the frontend -cd ../frontend -npm install -npm run build -API_URL=http://localhost:8080 # Set the URL of the backend, default: http://localhost:8080 -pm2 start --name="pingvin-share-frontend" .next/standalone/server.js -``` - -**Uploading Large Files**: By default, Pingvin Share uses a built-in reverse proxy to reduce the installation steps. However, this reverse proxy is not optimized for uploading large files. If you wish to upload larger files, you can either use the Docker installation or set up your own reverse proxy. An example configuration for Caddy can be found in `./Caddyfile`. - -The website is now listening on `http://localhost:3000`, have fun with Pingvin Share 🐧! - -### Integrations - -#### ClamAV (Docker only) - -ClamAV is used to scan shares for malicious files and remove them if found. - -1. Add the ClamAV container to the Docker Compose stack (see `docker-compose.yml`) and start the container. -2. Docker will wait for ClamAV to start before starting Pingvin Share. This may take a minute or two. -3. The Pingvin Share logs should now log "ClamAV is active" - -Please note that ClamAV needs a lot of [ressources](https://docs.clamav.net/manual/Installing/Docker.html#memory-ram-requirements). - -#### OAuth 2 Login - -View the [OAuth 2 guide](/docs/oauth2-guide.md) for more information. - -### Additional resources - -- [Synology NAS installation](https://mariushosting.com/how-to-install-pingvin-share-on-your-synology-nas/) -- [Zeabur installation](https://zeabur.com/templates/19G6OK) - -### Upgrade to a new version - -As Pingvin Share is in early stage, see the release notes for breaking changes before upgrading. - -#### Docker - -```bash -docker compose pull -docker compose up -d -``` - -#### Stand-alone - -1. Stop the running app - ```bash - pm2 stop pingvin-share-backend pingvin-share-frontend - ``` -2. Run the following commands: - - ```bash - cd pingvin-share - - # Checkout the latest version - git fetch --tags && git checkout $(git describe --tags `git rev-list --tags --max-count=1`) - - # Start the backend - cd backend - npm install - npx prisma generate - npm run build - pm2 restart pingvin-share-backend - - # Start the frontend - cd ../frontend - npm install - npm run build - API_URL=http://localhost:8080 # Set the URL of the backend, default: http://localhost:8080 - pm2 restart pingvin-share-frontend - ``` - -### Configuration - -You can customize Pingvin Share like changing your domain by going to the configuration page in your admin dashboard `/admin/config`. - -#### Environment variables - -For installation specific configuration, you can use environment variables. The following variables are available: - -##### Backend - -| Variable | Default Value | Description | -| ---------------- | -------------------------------------------------- | -------------------------------------- | -| `PORT` | `8080` | The port on which the backend listens. | -| `DATABASE_URL` | `file:../data/pingvin-share.db?connection_limit=1` | The URL of the SQLite database. | -| `DATA_DIRECTORY` | `./data` | The directory where data is stored. | -| `CLAMAV_HOST` | `127.0.0.1` | The IP address of the ClamAV server. | -| `CLAMAV_PORT` | `3310` | The port number of the ClamAV server. | - -##### Frontend - -| Variable | Default Value | Description | -| --------- | ----------------------- | ---------------------------------------- | -| `PORT` | `3000` | The port on which the frontend listens. | -| `API_URL` | `http://localhost:8080` | The URL of the backend for the frontend. | - -## 🖤 Contribute - -### Translations - -You can help to translate Pingvin Share into your language. -On [Crowdin](https://crowdin.com/project/pingvin-share) you can easily translate Pingvin Share online. - -Is your language not on Crowdin? Feel free to [Request it](https://github.com/stonith404/pingvin-share/issues/new?assignees=&labels=language-request&projects=&template=language-request.yml&title=%F0%9F%8C%90+Language+request%3A+%3Clanguage+name+in+english%3E). - -Any issues while translating? Feel free to participate in the [Localization discussion](https://github.com/stonith404/pingvin-share/discussions/198). - -### Project - -You're very welcome to contribute to Pingvin Share! Please follow the [contribution guide](/CONTRIBUTING.md) to get started. - -## Sponsors -Thank you for supporting Pingvin Share 🙏 -- [@COMPLEXWASTAKEN](https://github.com/COMPLEXWASTAKEN) \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 1e51a3f..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,7 +0,0 @@ -# Security Policy - -## Supported Versions -As Pingvin Share is in beta, older versions don't get security updates. Please consider to update Pingvin Share regularly. Updates can be automated with e.g [Watchtower](https://github.com/containrrr/watchtower). - -## Reporting a Vulnerability -Thank you for taking the time to report a vulnerability. Please DO NOT create an issue on GitHub because the vulnerability could get exploited. Instead please write an email to [elias@eliasschneider.com](mailto:elias@eliasschneider.com). diff --git a/assets/css/styles.2478c382.css b/assets/css/styles.2478c382.css new file mode 100644 index 0000000..7e6b43e --- /dev/null +++ b/assets/css/styles.2478c382.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Gvgb,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_BuS1>:last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter);content:""}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.themedComponent_mlkZ,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.iconExternalLink_nPIU{margin-left:.3rem}.dropdownNavbarItemMobile_S0Fm{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_ev3q{height:auto}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.lastUpdated_JAkA{text-align:right}.tocMobile_ITEo{display:none}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.docItemCol_VOVn{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.docItemContainer_F8PC{padding:0 .3rem}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/js/0e384e19.faa15ffa.js b/assets/js/0e384e19.faa15ffa.js new file mode 100644 index 0000000..a1500c8 --- /dev/null +++ b/assets/js/0e384e19.faa15ffa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[976],{619:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var t=i(4848),r=i(8453);const s={id:"introduction"},o="Introduction",a={id:"introduction",title:"Introduction",description:"Pingvin Share is self-hosted file sharing platform and an alternative for WeTransfer.",source:"@site/docs/intro.md",sourceDirName:".",slug:"/introduction",permalink:"/pingvin-share/introduction",draft:!1,unlisted:!1,editUrl:"https://github.com/stonith404/pingvin-share/docs/docs/docs/intro.md",tags:[],version:"current",frontMatter:{id:"introduction"},sidebar:"docsSidebar",next:{title:"Installation",permalink:"/pingvin-share/setup/installation"}},c={},l=[{value:"Features",id:"features",level:2},{value:"Get to know Pingvin Share",id:"get-to-know-pingvin-share",level:2}];function d(n){const e={a:"a",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,r.R)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.h1,{id:"introduction",children:"Introduction"}),"\n",(0,t.jsx)(e.p,{children:"Pingvin Share is self-hosted file sharing platform and an alternative for WeTransfer."}),"\n",(0,t.jsx)(e.h2,{id:"features",children:"Features"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:"Share files using a link"}),"\n",(0,t.jsx)(e.li,{children:"Unlimited file size (restricted only by disk space)"}),"\n",(0,t.jsx)(e.li,{children:"Set an expiration date for shares"}),"\n",(0,t.jsx)(e.li,{children:"Secure shares with visitor limits and passwords"}),"\n",(0,t.jsx)(e.li,{children:"Email recipients"}),"\n",(0,t.jsx)(e.li,{children:"Integration with ClamAV for security scans"}),"\n"]}),"\n",(0,t.jsx)(e.p,{children:"And more!"}),"\n",(0,t.jsx)(e.h2,{id:"get-to-know-pingvin-share",children:"Get to know Pingvin Share"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"https://pingvin-share.dev.eliasschneider.com",children:"Demo"})}),"\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"https://www.youtube.com/watch?v=rWwNeZCOPJA",children:"Review by DB Tech"})}),"\n"]}),"\n",(0,t.jsx)("img",{src:"https://user-images.githubusercontent.com/58886915/225038319-b2ef742c-3a74-4eb6-9689-4207a36842a4.png",width:"700"})]})}function h(n={}){const{wrapper:e}={...(0,r.R)(),...n.components};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(d,{...n})}):d(n)}},8453:(n,e,i)=>{i.d(e,{R:()=>o,x:()=>a});var t=i(6540);const r={},s=t.createContext(r);function o(n){const e=t.useContext(s);return t.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function a(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(r):n.components||r:o(n.components),t.createElement(s.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/17896441.5e15038e.js b/assets/js/17896441.5e15038e.js new file mode 100644 index 0000000..4876ec8 --- /dev/null +++ b/assets/js/17896441.5e15038e.js @@ -0,0 +1 @@ +(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[401],{4313:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>qt});var s=n(6540),a=n(1003),o=n(9532),i=n(4848);const l=s.createContext(null);function c(e){let{children:t,content:n}=e;const a=function(e){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return(0,i.jsx)(l.Provider,{value:a,children:t})}function r(){const e=(0,s.useContext)(l);if(null===e)throw new o.dV("DocProvider");return e}function d(){const{metadata:e,frontMatter:t,assets:n}=r();return(0,i.jsx)(a.be,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var u=n(4164),m=n(4581),h=n(1312),p=n(8774);function f(e){const{permalink:t,title:n,subLabel:s,isNext:a}=e;return(0,i.jsxs)(p.A,{className:(0,u.A)("pagination-nav__link",a?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[s&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:s}),(0,i.jsx)("div",{className:"pagination-nav__label",children:n})]})}function x(e){const{previous:t,next:n}=e;return(0,i.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,h.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,i.jsx)(f,{...t,subLabel:(0,i.jsx)(h.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),n&&(0,i.jsx)(f,{...n,subLabel:(0,i.jsx)(h.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function b(){const{metadata:e}=r();return(0,i.jsx)(x,{previous:e.previous,next:e.next})}var g=n(4586),j=n(4070),v=n(7559),N=n(5597),C=n(2252);const A={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,i.jsx)(h.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,i.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,i.jsx)(h.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,i.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function k(e){const t=A[e.versionMetadata.banner];return(0,i.jsx)(t,{...e})}function y(e){let{versionLabel:t,to:n,onClick:s}=e;return(0,i.jsx)(h.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,i.jsx)("b",{children:(0,i.jsx)(p.A,{to:n,onClick:s,children:(0,i.jsx)(h.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function L(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:s}}=(0,g.A)(),{pluginId:a}=(0,j.vT)({failfast:!0}),{savePreferredVersionName:o}=(0,N.g1)(a),{latestDocSuggestion:l,latestVersionSuggestion:c}=(0,j.HW)(a),r=l??(d=c).docs.find((e=>e.id===d.mainDocId));var d;return(0,i.jsxs)("div",{className:(0,u.A)(t,v.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,i.jsx)("div",{children:(0,i.jsx)(k,{siteTitle:s,versionMetadata:n})}),(0,i.jsx)("div",{className:"margin-top--md",children:(0,i.jsx)(y,{versionLabel:c.label,to:r.path,onClick:()=>o(c.name)})})]})}function _(e){let{className:t}=e;const n=(0,C.r)();return n.banner?(0,i.jsx)(L,{className:t,versionMetadata:n}):null}function B(e){let{className:t}=e;const n=(0,C.r)();return n.badge?(0,i.jsx)("span",{className:(0,u.A)(t,v.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,i.jsx)(h.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}const w={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function T(e){let{permalink:t,label:n,count:s,description:a}=e;return(0,i.jsxs)(p.A,{href:t,title:a,className:(0,u.A)(w.tag,s?w.tagWithCount:w.tagRegular),children:[n,s&&(0,i.jsx)("span",{children:s})]})}const E={tags:"tags_jXut",tag:"tag_QGVx"};function H(e){let{tags:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(h.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,u.A)(E.tags,"padding--none","margin-left--sm"),children:t.map((e=>(0,i.jsx)("li",{className:E.tag,children:(0,i.jsx)(T,{...e})},e.permalink)))})]})}const M={iconEdit:"iconEdit_Z9Sw"};function I(e){let{className:t,...n}=e;return(0,i.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,u.A)(M.iconEdit,t),"aria-hidden":"true",...n,children:(0,i.jsx)("g",{children:(0,i.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function S(e){let{editUrl:t}=e;return(0,i.jsxs)(p.A,{to:t,className:v.G.common.editThisPage,children:[(0,i.jsx)(I,{}),(0,i.jsx)(h.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}function U(e){void 0===e&&(e={});const{i18n:{currentLocale:t}}=(0,g.A)(),n=function(){const{i18n:{currentLocale:e,localeConfigs:t}}=(0,g.A)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:n,...e})}function V(e){let{lastUpdatedAt:t}=e;const n=new Date(t),s=U({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(n);return(0,i.jsx)(h.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,i.jsx)("b",{children:(0,i.jsx)("time",{dateTime:n.toISOString(),itemProp:"dateModified",children:s})})},children:" on {date}"})}function R(e){let{lastUpdatedBy:t}=e;return(0,i.jsx)(h.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,i.jsx)("b",{children:t})},children:" by {user}"})}function z(e){let{lastUpdatedAt:t,lastUpdatedBy:n}=e;return(0,i.jsxs)("span",{className:v.G.common.lastUpdated,children:[(0,i.jsx)(h.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t?(0,i.jsx)(V,{lastUpdatedAt:t}):"",byUser:n?(0,i.jsx)(R,{lastUpdatedBy:n}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const O={lastUpdated:"lastUpdated_JAkA"};function P(e){let{className:t,editUrl:n,lastUpdatedAt:s,lastUpdatedBy:a}=e;return(0,i.jsxs)("div",{className:(0,u.A)("row",t),children:[(0,i.jsx)("div",{className:"col",children:n&&(0,i.jsx)(S,{editUrl:n})}),(0,i.jsx)("div",{className:(0,u.A)("col",O.lastUpdated),children:(s||a)&&(0,i.jsx)(z,{lastUpdatedAt:s,lastUpdatedBy:a})})]})}function G(){const{metadata:e}=r(),{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s,tags:a}=e,o=a.length>0,l=!!(t||n||s);return o||l?(0,i.jsxs)("footer",{className:(0,u.A)(v.G.docs.docFooter,"docusaurus-mt-lg"),children:[o&&(0,i.jsx)("div",{className:(0,u.A)("row margin-top--sm",v.G.docs.docFooterTagsRow),children:(0,i.jsx)("div",{className:"col",children:(0,i.jsx)(H,{tags:a})})}),l&&(0,i.jsx)(P,{className:(0,u.A)("margin-top--sm",v.G.docs.docFooterEditMetaRow),editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s})]}):null}var D=n(1422),W=n(6342);function $(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const s=n.slice(2,e.level);e.parentIndex=Math.max(...s),n[e.level]=t}));const s=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):s.push(a)})),s}function F(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:s}=e;return t.flatMap((e=>{const t=F({toc:e.children,minHeadingLevel:n,maxHeadingLevel:s});return function(e){return e.level>=n&&e.level<=s}(e)?[{...e,children:t}]:t}))}function q(e){const t=e.getBoundingClientRect();return t.top===t.bottom?q(e.parentNode):t}function Z(e,t){let{anchorTopOffset:n}=t;const s=e.find((e=>q(e).top>=n));if(s){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function Y(e){const t=(0,s.useRef)(void 0),n=J();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:i}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const s=[];for(let a=t;a<=n;a+=1)s.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:o,maxHeadingLevel:i}),c=Z(l,{anchorTopOffset:n.current}),r=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===r)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}function K(e){let{toc:t,className:n,linkClassName:s,isChild:a}=e;return t.length?(0,i.jsx)("ul",{className:a?void 0:n,children:t.map((e=>(0,i.jsxs)("li",{children:[(0,i.jsx)(p.A,{to:`#${e.id}`,className:s??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,i.jsx)(K,{isChild:!0,toc:e.children,className:n,linkClassName:s})]},e.id)))}):null}const Q=s.memo(K);function X(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:a="table-of-contents__link",linkActiveClassName:o,minHeadingLevel:l,maxHeadingLevel:c,...r}=e;const d=(0,W.p)(),u=l??d.tableOfContents.minHeadingLevel,m=c??d.tableOfContents.maxHeadingLevel,h=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,s.useMemo)((()=>F({toc:$(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:u,maxHeadingLevel:m});return Y((0,s.useMemo)((()=>{if(a&&o)return{linkClassName:a,linkActiveClassName:o,minHeadingLevel:u,maxHeadingLevel:m}}),[a,o,u,m])),(0,i.jsx)(Q,{toc:h,className:n,linkClassName:a,...r})}const ee={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function te(e){let{collapsed:t,...n}=e;return(0,i.jsx)("button",{type:"button",...n,className:(0,u.A)("clean-btn",ee.tocCollapsibleButton,!t&&ee.tocCollapsibleButtonExpanded,n.className),children:(0,i.jsx)(h.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const ne={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function se(e){let{toc:t,className:n,minHeadingLevel:s,maxHeadingLevel:a}=e;const{collapsed:o,toggleCollapsed:l}=(0,D.u)({initialState:!0});return(0,i.jsxs)("div",{className:(0,u.A)(ne.tocCollapsible,!o&&ne.tocCollapsibleExpanded,n),children:[(0,i.jsx)(te,{collapsed:o,onClick:l}),(0,i.jsx)(D.N,{lazy:!0,className:ne.tocCollapsibleContent,collapsed:o,children:(0,i.jsx)(X,{toc:t,minHeadingLevel:s,maxHeadingLevel:a})})]})}const ae={tocMobile:"tocMobile_ITEo"};function oe(){const{toc:e,frontMatter:t}=r();return(0,i.jsx)(se,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.A)(v.G.docs.docTocMobile,ae.tocMobile)})}const ie={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},le="table-of-contents__link toc-highlight",ce="table-of-contents__link--active";function re(e){let{className:t,...n}=e;return(0,i.jsx)("div",{className:(0,u.A)(ie.tableOfContents,"thin-scrollbar",t),children:(0,i.jsx)(X,{...n,linkClassName:le,linkActiveClassName:ce})})}function de(){const{toc:e,frontMatter:t}=r();return(0,i.jsx)(re,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:v.G.docs.docTocDesktop})}var ue=n(1107),me=n(8453),he=n(5260),pe=n(2303),fe=n(5293);function xe(){const{prism:e}=(0,W.p)(),{colorMode:t}=(0,fe.G)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var be=n(8426),ge=n.n(be);const je=/title=(?["'])(?.*?)\1/,ve=/\{(?<range>[\d,-]+)\}/,Ne={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},Ce={...Ne,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},Ae=Object.keys(Ne);function ke(e,t){const n=e.map((e=>{const{start:n,end:s}=Ce[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function ye(e,t){let n=e.replace(/\n$/,"");const{language:s,magicComments:a,metastring:o}=t;if(o&&ve.test(o)){const e=o.match(ve).groups.range;if(0===a.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${o}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=a[0].className,s=ge()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(s),code:n}}if(void 0===s)return{lineClassNames:{},code:n};const i=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return ke(["js","jsBlock"],t);case"jsx":case"tsx":return ke(["js","jsBlock","jsx"],t);case"html":return ke(["js","jsBlock","html"],t);case"python":case"py":case"bash":return ke(["bash"],t);case"markdown":case"md":return ke(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return ke(["tex"],t);case"lua":case"haskell":case"sql":return ke(["lua"],t);case"wasm":return ke(["wasm"],t);case"vb":case"vba":case"visual-basic":return ke(["vb","rem"],t);case"vbnet":return ke(["vbnet","rem"],t);case"batch":return ke(["rem"],t);case"basic":return ke(["rem","f90"],t);case"fsharp":return ke(["js","ml"],t);case"ocaml":case"sml":return ke(["ml"],t);case"fortran":return ke(["f90"],t);case"cobol":return ke(["cobol"],t);default:return ke(Ae,t)}}(s,a),l=n.split("\n"),c=Object.fromEntries(a.map((e=>[e.className,{start:0,range:""}]))),r=Object.fromEntries(a.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),u=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let h=0;h<l.length;){const e=l[h].match(i);if(!e){h+=1;continue}const t=e.slice(1).find((e=>void 0!==e));r[t]?c[r[t]].range+=`${h},`:d[t]?c[d[t]].start=h:u[t]&&(c[u[t]].range+=`${c[u[t]].start}-${h-1},`),l.splice(h,1)}n=l.join("\n");const m={};return Object.entries(c).forEach((e=>{let[t,{range:n}]=e;ge()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const Le={codeBlockContainer:"codeBlockContainer_Ckt0"};function _e(e){let{as:t,...n}=e;const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[s,a]=e;const o=t[s];o&&"string"==typeof a&&(n[o]=a)})),n}(xe());return(0,i.jsx)(t,{...n,style:s,className:(0,u.A)(n.className,Le.codeBlockContainer,v.G.common.codeBlock)})}const Be={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function we(e){let{children:t,className:n}=e;return(0,i.jsx)(_e,{as:"pre",tabIndex:0,className:(0,u.A)(Be.codeBlockStandalone,"thin-scrollbar",n),children:(0,i.jsx)("code",{className:Be.codeBlockLines,children:t})})}const Te={attributes:!0,characterData:!0,childList:!0,subtree:!0};function Ee(e,t){const[n,a]=(0,s.useState)(),i=(0,s.useCallback)((()=>{a(e.current?.closest("[role=tabpanel][hidden]"))}),[e,a]);(0,s.useEffect)((()=>{i()}),[i]),function(e,t,n){void 0===n&&(n=Te);const a=(0,o._q)(t),i=(0,o.Be)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(a);return e&&t.observe(e,i),()=>t.disconnect()}),[e,a,i])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),i())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var He=n(1765);const Me={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function Ie(e){let{line:t,classNames:n,showLineNumbers:s,getLineProps:a,getTokenProps:o}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const l=a({line:t,className:(0,u.A)(n,s&&Me.codeLine)}),c=t.map(((e,t)=>(0,i.jsx)("span",{...o({token:e})},t)));return(0,i.jsxs)("span",{...l,children:[s?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:Me.codeLineNumber}),(0,i.jsx)("span",{className:Me.codeLineContent,children:c})]}):c,(0,i.jsx)("br",{})]})}function Se(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function Ue(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const Ve={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function Re(e){let{code:t,className:n}=e;const[a,o]=(0,s.useState)(!1),l=(0,s.useRef)(void 0),c=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const s=document.createElement("textarea"),a=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const o=document.getSelection(),i=o.rangeCount>0&&o.getRangeAt(0);n.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}s.remove(),i&&(o.removeAllRanges(),o.addRange(i)),a&&a.focus()}(t),o(!0),l.current=window.setTimeout((()=>{o(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(l.current)),[]),(0,i.jsx)("button",{type:"button","aria-label":a?(0,h.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,h.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,h.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,u.A)("clean-btn",n,Ve.copyButton,a&&Ve.copyButtonCopied),onClick:c,children:(0,i.jsxs)("span",{className:Ve.copyButtonIcons,"aria-hidden":"true",children:[(0,i.jsx)(Se,{className:Ve.copyButtonIcon}),(0,i.jsx)(Ue,{className:Ve.copyButtonSuccessIcon})]})})}function ze(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const Oe={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function Pe(e){let{className:t,onClick:n,isEnabled:s}=e;const a=(0,h.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,i.jsx)("button",{type:"button",onClick:n,className:(0,u.A)("clean-btn",t,s&&Oe.wordWrapButtonEnabled),"aria-label":a,title:a,children:(0,i.jsx)(ze,{className:Oe.wordWrapButtonIcon,"aria-hidden":"true"})})}function Ge(e){let{children:t,className:n="",metastring:a,title:o,showLineNumbers:l,language:c}=e;const{prism:{defaultLanguage:r,magicComments:d}}=(0,W.p)(),m=function(e){return e?.toLowerCase()}(c??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??r),h=xe(),p=function(){const[e,t]=(0,s.useState)(!1),[n,a]=(0,s.useState)(!1),o=(0,s.useRef)(null),i=(0,s.useCallback)((()=>{const n=o.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[o,e]),l=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=o.current,n=e>t||o.current.querySelector("code").hasAttribute("style");a(n)}),[o]);return Ee(o,l),(0,s.useEffect)((()=>{l()}),[e,l]),(0,s.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:o,isEnabled:e,isCodeScrollable:n,toggle:i}}(),f=function(e){return e?.match(je)?.groups.title??""}(a)||o,{lineClassNames:x,code:b}=ye(t,{metastring:a,language:m,magicComments:d}),g=l??function(e){return Boolean(e?.includes("showLineNumbers"))}(a);return(0,i.jsxs)(_e,{as:"div",className:(0,u.A)(n,m&&!n.includes(`language-${m}`)&&`language-${m}`),children:[f&&(0,i.jsx)("div",{className:Be.codeBlockTitle,children:f}),(0,i.jsxs)("div",{className:Be.codeBlockContent,children:[(0,i.jsx)(He.f4,{theme:h,code:b,language:m??"text",children:e=>{let{className:t,style:n,tokens:s,getLineProps:a,getTokenProps:o}=e;return(0,i.jsx)("pre",{tabIndex:0,ref:p.codeBlockRef,className:(0,u.A)(t,Be.codeBlock,"thin-scrollbar"),style:n,children:(0,i.jsx)("code",{className:(0,u.A)(Be.codeBlockLines,g&&Be.codeBlockLinesWithNumbering),children:s.map(((e,t)=>(0,i.jsx)(Ie,{line:e,getLineProps:a,getTokenProps:o,classNames:x[t],showLineNumbers:g},t)))})})}}),(0,i.jsxs)("div",{className:Be.buttonGroup,children:[(p.isEnabled||p.isCodeScrollable)&&(0,i.jsx)(Pe,{className:Be.codeButton,onClick:()=>p.toggle(),isEnabled:p.isEnabled}),(0,i.jsx)(Re,{className:Be.codeButton,code:b})]})]})]})}function De(e){let{children:t,...n}=e;const a=(0,pe.A)(),o=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),l="string"==typeof o?Ge:we;return(0,i.jsx)(l,{...n,children:o},String(a))}function We(e){return(0,i.jsx)("code",{...e})}var $e=n(3427);const Fe={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function qe(e){return!!e&&("SUMMARY"===e.tagName||qe(e.parentElement))}function Ze(e,t){return!!e&&(e===t||Ze(e.parentElement,t))}function Je(e){let{summary:t,children:n,...a}=e;(0,$e.A)().collectAnchor(a.id);const o=(0,pe.A)(),l=(0,s.useRef)(null),{collapsed:c,setCollapsed:r}=(0,D.u)({initialState:!a.open}),[d,m]=(0,s.useState)(a.open),h=s.isValidElement(t)?t:(0,i.jsx)("summary",{children:t??"Details"});return(0,i.jsxs)("details",{...a,ref:l,open:d,"data-collapsed":c,className:(0,u.A)(Fe.details,o&&Fe.isBrowser,a.className),onMouseDown:e=>{qe(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;qe(t)&&Ze(t,l.current)&&(e.preventDefault(),c?(r(!1),m(!0)):r(!0))},children:[h,(0,i.jsx)(D.N,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{r(e),m(!e)},children:(0,i.jsx)("div",{className:Fe.collapsibleContent,children:n})})]})}const Ye={details:"details_b_Ee"},Ke="alert alert--info";function Qe(e){let{...t}=e;return(0,i.jsx)(Je,{...t,className:(0,u.A)(Ke,Ye.details,t.className)})}function Xe(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),a=(0,i.jsx)(i.Fragment,{children:t.filter((e=>e!==n))});return(0,i.jsx)(Qe,{...e,summary:n,children:a})}function et(e){return(0,i.jsx)(ue.A,{...e})}const tt={containsTaskList:"containsTaskList_mC6p"};function nt(e){if(void 0!==e)return(0,u.A)(e,e?.includes("contains-task-list")&&tt.containsTaskList)}const st={img:"img_ev3q"};function at(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),a=t.filter((e=>e!==n)),o=n?.props.children;return{mdxAdmonitionTitle:o,rest:a.length>0?(0,i.jsx)(i.Fragment,{children:a}):null}}(e.children),a=e.title??t;return{...e,...a&&{title:a},children:n}}const ot={admonition:"admonition_xJq3",admonitionHeading:"admonitionHeading_Gvgb",admonitionIcon:"admonitionIcon_Rf37",admonitionContent:"admonitionContent_BuS1"};function it(e){let{type:t,className:n,children:s}=e;return(0,i.jsx)("div",{className:(0,u.A)(v.G.common.admonition,v.G.common.admonitionType(t),ot.admonition,n),children:s})}function lt(e){let{icon:t,title:n}=e;return(0,i.jsxs)("div",{className:ot.admonitionHeading,children:[(0,i.jsx)("span",{className:ot.admonitionIcon,children:t}),n]})}function ct(e){let{children:t}=e;return t?(0,i.jsx)("div",{className:ot.admonitionContent,children:t}):null}function rt(e){const{type:t,icon:n,title:s,children:a,className:o}=e;return(0,i.jsxs)(it,{type:t,className:o,children:[s||n?(0,i.jsx)(lt,{title:s,icon:n}):null,(0,i.jsx)(ct,{children:a})]})}function dt(e){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const ut={icon:(0,i.jsx)(dt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function mt(e){return(0,i.jsx)(rt,{...ut,...e,className:(0,u.A)("alert alert--secondary",e.className),children:e.children})}function ht(e){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const pt={icon:(0,i.jsx)(ht,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function ft(e){return(0,i.jsx)(rt,{...pt,...e,className:(0,u.A)("alert alert--success",e.className),children:e.children})}function xt(e){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const bt={icon:(0,i.jsx)(xt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function gt(e){return(0,i.jsx)(rt,{...bt,...e,className:(0,u.A)("alert alert--info",e.className),children:e.children})}function jt(e){return(0,i.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const vt={icon:(0,i.jsx)(jt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function Nt(e){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const Ct={icon:(0,i.jsx)(Nt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const At={icon:(0,i.jsx)(jt,{}),title:(0,i.jsx)(h.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const kt={...{note:mt,tip:ft,info:gt,warning:function(e){return(0,i.jsx)(rt,{...vt,...e,className:(0,u.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,i.jsx)(rt,{...Ct,...e,className:(0,u.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,i.jsx)(mt,{title:"secondary",...e}),important:e=>(0,i.jsx)(gt,{title:"important",...e}),success:e=>(0,i.jsx)(ft,{title:"success",...e}),caution:function(e){return(0,i.jsx)(rt,{...At,...e,className:(0,u.A)("alert alert--warning",e.className),children:e.children})}}};function yt(e){const t=at(e),n=(s=t.type,kt[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),kt.info));var s;return(0,i.jsx)(n,{...t})}var Lt=n(418);const _t={Head:he.A,details:Xe,Details:Xe,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,i.jsx)(We,{...e}):(0,i.jsx)(De,{...e})},a:function(e){return(0,i.jsx)(p.A,{...e})},pre:function(e){return(0,i.jsx)(i.Fragment,{children:e.children})},ul:function(e){return(0,i.jsx)("ul",{...e,className:nt(e.className)})},li:function(e){return(0,$e.A)().collectAnchor(e.id),(0,i.jsx)("li",{...e})},img:function(e){return(0,i.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,u.A)(t,st.img))});var t},h1:e=>(0,i.jsx)(et,{as:"h1",...e}),h2:e=>(0,i.jsx)(et,{as:"h2",...e}),h3:e=>(0,i.jsx)(et,{as:"h3",...e}),h4:e=>(0,i.jsx)(et,{as:"h4",...e}),h5:e=>(0,i.jsx)(et,{as:"h5",...e}),h6:e=>(0,i.jsx)(et,{as:"h6",...e}),admonition:yt,mermaid:Lt.A};function Bt(e){let{children:t}=e;return(0,i.jsx)(me.x,{components:_t,children:t})}function wt(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=r();return t.hide_title||void 0!==n?null:e.title}();return(0,i.jsxs)("div",{className:(0,u.A)(v.G.docs.docMarkdown,"markdown"),children:[n&&(0,i.jsx)("header",{children:(0,i.jsx)(ue.A,{as:"h1",children:n})}),(0,i.jsx)(Bt,{children:t})]})}var Tt=n(1754),Et=n(9169),Ht=n(6025);function Mt(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const It={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function St(){const e=(0,Ht.Ay)("/");return(0,i.jsx)("li",{className:"breadcrumbs__item",children:(0,i.jsx)(p.A,{"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,i.jsx)(Mt,{className:It.breadcrumbHomeIcon})})})}const Ut={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function Vt(e){let{children:t,href:n,isLast:s}=e;const a="breadcrumbs__link";return s?(0,i.jsx)("span",{className:a,itemProp:"name",children:t}):n?(0,i.jsx)(p.A,{className:a,href:n,itemProp:"item",children:(0,i.jsx)("span",{itemProp:"name",children:t})}):(0,i.jsx)("span",{className:a,children:t})}function Rt(e){let{children:t,active:n,index:s,addMicrodata:a}=e;return(0,i.jsxs)("li",{...a&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,u.A)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:[t,(0,i.jsx)("meta",{itemProp:"position",content:String(s+1)})]})}function zt(){const e=(0,Tt.OF)(),t=(0,Et.Dt)();return e?(0,i.jsx)("nav",{className:(0,u.A)(v.G.docs.docBreadcrumbs,Ut.breadcrumbsContainer),"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,i.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[t&&(0,i.jsx)(St,{}),e.map(((t,n)=>{const s=n===e.length-1,a="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,i.jsx)(Rt,{active:s,index:n,addMicrodata:!!a,children:(0,i.jsx)(Vt,{href:a,isLast:s,children:t.label})},n)}))]})}):null}function Ot(){return(0,i.jsx)(h.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function Pt(){return(0,i.jsx)(h.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function Gt(){return(0,i.jsx)(he.A,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function Dt(e){let{className:t}=e;return(0,i.jsx)(yt,{type:"caution",title:(0,i.jsx)(Ot,{}),className:(0,u.A)(t,v.G.common.unlistedBanner),children:(0,i.jsx)(Pt,{})})}function Wt(e){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Gt,{}),(0,i.jsx)(Dt,{...e})]})}const $t={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function Ft(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=r(),n=(0,m.l)(),s=e.hide_table_of_contents,a=!s&&t.length>0;return{hidden:s,mobile:a?(0,i.jsx)(oe,{}):void 0,desktop:!a||"desktop"!==n&&"ssr"!==n?void 0:(0,i.jsx)(de,{})}}(),{metadata:{unlisted:s}}=r();return(0,i.jsxs)("div",{className:"row",children:[(0,i.jsxs)("div",{className:(0,u.A)("col",!n.hidden&&$t.docItemCol),children:[s&&(0,i.jsx)(Wt,{}),(0,i.jsx)(_,{}),(0,i.jsxs)("div",{className:$t.docItemContainer,children:[(0,i.jsxs)("article",{children:[(0,i.jsx)(zt,{}),(0,i.jsx)(B,{}),n.mobile,(0,i.jsx)(wt,{children:t}),(0,i.jsx)(G,{})]}),(0,i.jsx)(b,{})]})]}),n.desktop&&(0,i.jsx)("div",{className:"col col--3",children:n.desktop})]})}function qt(e){const t=`docs-doc-id-${e.content.metadata.id}`,n=e.content;return(0,i.jsx)(c,{content:e.content,children:(0,i.jsxs)(a.e3,{className:t,children:[(0,i.jsx)(d,{}),(0,i.jsx)(Ft,{children:(0,i.jsx)(n,{})})]})})}},8426:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,a,o]=t;if(s&&o){s=parseInt(s),o=parseInt(o);const e=s<o?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(o+=e);for(let t=s;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},8453:(e,t,n)=>{"use strict";n.d(t,{R:()=>i,x:()=>l});var s=n(6540);const a={},o=s.createContext(a);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1df93b7f.414879d5.js b/assets/js/1df93b7f.414879d5.js new file mode 100644 index 0000000..9c99fe8 --- /dev/null +++ b/assets/js/1df93b7f.414879d5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[583],{6866:(n,i,s)=>{s.r(i),s.d(i,{default:()=>c});s(6540);var t=s(6347),u=s(4848);function c(){return(0,u.jsx)(t.rd,{to:"/introduction"})}}}]); \ No newline at end of file diff --git a/assets/js/237.f947e7e3.js b/assets/js/237.f947e7e3.js new file mode 100644 index 0000000..d9776d5 --- /dev/null +++ b/assets/js/237.f947e7e3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[237],{3363:(e,t,n)=>{n.d(t,{A:()=>a});n(6540);var i=n(4164),o=n(1312),s=n(1107),r=n(4848);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,i.A)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},2237:(e,t,n)=>{n.r(t),n.d(t,{default:()=>d});n(6540);var i=n(1312),o=n(1003),s=n(781),r=n(3363),a=n(4848);function d(){const e=(0,i.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.be,{title:e}),(0,a.jsx)(s.A,{children:(0,a.jsx)(r.A,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/3205bd6d.86b778bb.js b/assets/js/3205bd6d.86b778bb.js new file mode 100644 index 0000000..dd840b4 --- /dev/null +++ b/assets/js/3205bd6d.86b778bb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[361],{2744:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>s,metadata:()=>o,toc:()=>c});var i=t(4848),r=t(8453);const s={id:"upgrading"},a="Upgrading",o={id:"setup/upgrading",title:"Upgrading",description:"Upgrade to a new version",source:"@site/docs/setup/upgrading.md",sourceDirName:"setup",slug:"/setup/upgrading",permalink:"/pingvin-share/setup/upgrading",draft:!1,unlisted:!1,editUrl:"https://github.com/stonith404/pingvin-share/docs/docs/docs/setup/upgrading.md",tags:[],version:"current",frontMatter:{id:"upgrading"},sidebar:"docsSidebar",previous:{title:"OAuth 2 Login Guide",permalink:"/pingvin-share/setup/oauth2login"},next:{title:"Translating",permalink:"/pingvin-share/How to/translate"}},d={},c=[{value:"Upgrade to a new version",id:"upgrade-to-a-new-version",level:3},{value:"Docker",id:"docker",level:4},{value:"Stand-alone",id:"stand-alone",level:4}];function l(n){const e={a:"a",code:"code",h1:"h1",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",...(0,r.R)(),...n.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.h1,{id:"upgrading",children:"Upgrading"}),"\n",(0,i.jsx)(e.h3,{id:"upgrade-to-a-new-version",children:"Upgrade to a new version"}),"\n",(0,i.jsx)(e.p,{children:"As Pingvin Share is in early stage, see the release notes for breaking changes before upgrading."}),"\n",(0,i.jsx)(e.h4,{id:"docker",children:"Docker"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-bash",children:"docker compose pull\ndocker compose up -d\n"})}),"\n",(0,i.jsx)(e.h4,{id:"stand-alone",children:"Stand-alone"}),"\n",(0,i.jsxs)(e.ol,{children:["\n",(0,i.jsxs)(e.li,{children:["\n",(0,i.jsx)(e.p,{children:"Stop the running app"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-bash",children:"pm2 stop pingvin-share-backend pingvin-share-frontend\n"})}),"\n"]}),"\n",(0,i.jsxs)(e.li,{children:["\n",(0,i.jsxs)(e.p,{children:["Repeat the steps from the ",(0,i.jsx)(e.a,{href:"#stand-alone-installation",children:"installation guide"})," except the ",(0,i.jsx)(e.code,{children:"git clone"})," step."]}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-bash",children:"cd pingvin-share\n\n# Checkout the latest version\ngit fetch --tags && git checkout $(git describe --tags `git rev-list --tags --max-count=1`)\n\n# Start the backend\ncd backend\nnpm install\nnpm run build\npm2 restart pingvin-share-backend\n\n# Start the frontend\ncd ../frontend\nnpm install\nnpm run build\nAPI_URL=http://localhost:8080 # Set the URL of the backend, default: http://localhost:8080\npm2 restart pingvin-share-frontend\n"})}),"\n"]}),"\n"]})]})}function p(n={}){const{wrapper:e}={...(0,r.R)(),...n.components};return e?(0,i.jsx)(e,{...n,children:(0,i.jsx)(l,{...n})}):l(n)}},8453:(n,e,t)=>{t.d(e,{R:()=>a,x:()=>o});var i=t(6540);const r={},s=i.createContext(r);function a(n){const e=i.useContext(s);return i.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function o(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(r):n.components||r:a(n.components),i.createElement(s.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/36493d4b.b0bd8bf4.js b/assets/js/36493d4b.b0bd8bf4.js new file mode 100644 index 0000000..0bf0c01 --- /dev/null +++ b/assets/js/36493d4b.b0bd8bf4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[202],{3439:(n,t,e)=>{e.r(t),e.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var s=e(4848),i=e(8453);const a={},r="Translating",o={id:"How to/translate",title:"Translating",description:"You can help to translate Pingvin Share into your language.",source:"@site/docs/How to/translate.md",sourceDirName:"How to",slug:"/How to/translate",permalink:"/pingvin-share/How to/translate",draft:!1,unlisted:!1,editUrl:"https://github.com/stonith404/pingvin-share/docs/docs/docs/How to/translate.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Upgrading",permalink:"/pingvin-share/setup/upgrading"},next:{title:"Contributing",permalink:"/pingvin-share/How to/contribute"}},c={},l=[];function u(n){const t={a:"a",h1:"h1",p:"p",...(0,i.R)(),...n.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"translating",children:"Translating"}),"\n",(0,s.jsxs)(t.p,{children:["You can help to translate Pingvin Share into your language.\nOn ",(0,s.jsx)(t.a,{href:"https://crowdin.com/project/pingvin-share",children:"Crowdin"})," you can easily translate Pingvin Share online."]}),"\n",(0,s.jsxs)(t.p,{children:["Is your language not on Crowdin? Feel free to ",(0,s.jsx)(t.a,{href:"https://github.com/stonith404/pingvin-share/issues/new?assignees=&labels=language-request&projects=&template=language-request.yml&title=%F0%9F%8C%90+Language+request%3A+%3Clanguage+name+in+english%3E",children:"Request it"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["Any issues while translating? Feel free to participate in the ",(0,s.jsx)(t.a,{href:"https://github.com/stonith404/pingvin-share/discussions/198",children:"Localization discussion"}),"."]})]})}function p(n={}){const{wrapper:t}={...(0,i.R)(),...n.components};return t?(0,s.jsx)(t,{...n,children:(0,s.jsx)(u,{...n})}):u(n)}},8453:(n,t,e)=>{e.d(t,{R:()=>r,x:()=>o});var s=e(6540);const i={},a=s.createContext(i);function r(n){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof n?n(t):{...t,...n}}),[t,n])}function o(n){let t;return t=n.disableParentContext?"function"==typeof n.components?n.components(i):n.components||i:r(n.components),s.createElement(a.Provider,{value:t},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/3f2e6990.91d251d4.js b/assets/js/3f2e6990.91d251d4.js new file mode 100644 index 0000000..4b8ad4e --- /dev/null +++ b/assets/js/3f2e6990.91d251d4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[819],{3403:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>t,metadata:()=>s,toc:()=>l});var o=i(4848),r=i(8453);const t={id:"oauth2login"},d="OAuth 2 Login Guide",s={id:"setup/oauth2login",title:"OAuth 2 Login Guide",description:"Config Built-in OAuth 2 Providers",source:"@site/docs/setup/oauth2login.md",sourceDirName:"setup",slug:"/setup/oauth2login",permalink:"/pingvin-share/setup/oauth2login",draft:!1,unlisted:!1,editUrl:"https://github.com/stonith404/pingvin-share/docs/docs/docs/setup/oauth2login.md",tags:[],version:"current",frontMatter:{id:"oauth2login"},sidebar:"docsSidebar",previous:{title:"Integrations",permalink:"/pingvin-share/setup/integrations"},next:{title:"Upgrading",permalink:"/pingvin-share/setup/upgrading"}},c={},l=[{value:"Config Built-in OAuth 2 Providers",id:"config-built-in-oauth-2-providers",level:2},{value:"GitHub",id:"github",level:3},{value:"Google",id:"google",level:3},{value:"Microsoft",id:"microsoft",level:3},{value:"Discord",id:"discord",level:3},{value:"OpenID Connect",id:"openid-connect",level:3},{value:"Custom your OAuth 2 Provider",id:"custom-your-oauth-2-provider",level:2},{value:"1. Create config",id:"1-create-config",level:3},{value:"2. Create provider class",id:"2-create-provider-class",level:3},{value:"Generic OpenID Connect",id:"generic-openid-connect",level:4},{value:"OAuth 2",id:"oauth-2",level:4},{value:"3. Register provider",id:"3-register-provider",level:3},{value:"4. Add frontend icon",id:"4-add-frontend-icon",level:3},{value:"5. Add i18n text",id:"5-add-i18n-text",level:3}];function a(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"oauth-2-login-guide",children:"OAuth 2 Login Guide"}),"\n",(0,o.jsx)(n.h2,{id:"config-built-in-oauth-2-providers",children:"Config Built-in OAuth 2 Providers"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#github",children:"GitHub"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#google",children:"Google"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#microsoft",children:"Microsoft"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#discord",children:"Discord"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#openid-connect",children:"OpenID Connect"})}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"github",children:"GitHub"}),"\n",(0,o.jsxs)(n.p,{children:["Please follow the ",(0,o.jsx)(n.a,{href:"https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app",children:"official guide"})," to create an OAuth app."]}),"\n",(0,o.jsxs)(n.p,{children:["Redirect URL: ",(0,o.jsx)(n.code,{children:"https://<your-domain>/api/oauth/callback/github"})]}),"\n",(0,o.jsx)(n.h3,{id:"google",children:"Google"}),"\n",(0,o.jsxs)(n.p,{children:["Please follow the ",(0,o.jsx)(n.a,{href:"https://developers.google.com/identity/protocols/oauth2/web-server#prerequisites",children:"official guide"})," to create an OAuth 2.0 App."]}),"\n",(0,o.jsxs)(n.p,{children:["Redirect URL: ",(0,o.jsx)(n.code,{children:"https://<your-domain>/api/oauth/callback/google"})]}),"\n",(0,o.jsx)(n.h3,{id:"microsoft",children:"Microsoft"}),"\n",(0,o.jsxs)(n.p,{children:["Please follow the ",(0,o.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app",children:"official guide"})," to register an application."]}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["[!IMPORTANT] > ",(0,o.jsx)(n.strong,{children:"Microsoft Tenant"})," you set in the admin panel must match the ",(0,o.jsx)(n.strong,{children:"supported account types"})," you set in the Microsoft Entra admin center, otherwise the OAuth login will not work. Refer to the ",(0,o.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols-oidc#find-your-apps-openid-configuration-document-uri",children:"official documentation"})," for more details."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Redirect URL: ",(0,o.jsx)(n.code,{children:"https://<your-domain>/api/oauth/callback/microsoft"})]}),"\n",(0,o.jsx)(n.h3,{id:"discord",children:"Discord"}),"\n",(0,o.jsxs)(n.p,{children:["Create an application on ",(0,o.jsx)(n.a,{href:"https://discord.com/developers/applications",children:"Discord Developer Portal"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Redirect URL: ",(0,o.jsx)(n.code,{children:"https://<your-domain>/api/oauth/callback/discord"})]}),"\n",(0,o.jsx)(n.h3,{id:"openid-connect",children:"OpenID Connect"}),"\n",(0,o.jsx)(n.p,{children:"Generic OpenID Connect provider is also supported, we have tested it on Keycloak, Authentik and Casdoor."}),"\n",(0,o.jsxs)(n.p,{children:["Redirect URL: ",(0,o.jsx)(n.code,{children:"https://<your-domain>/api/oauth/callback/oidc"})]}),"\n",(0,o.jsx)(n.h2,{id:"custom-your-oauth-2-provider",children:"Custom your OAuth 2 Provider"}),"\n",(0,o.jsx)(n.p,{children:"If our built-in providers don't meet your needs, you can create your own OAuth 2 provider."}),"\n",(0,o.jsx)(n.h3,{id:"1-create-config",children:"1. Create config"}),"\n",(0,o.jsxs)(n.p,{children:["Add your config (client id, client secret, etc.) in ",(0,o.jsx)(n.a,{href:"../backend/prisma/seed/config.seed.ts",children:(0,o.jsx)(n.code,{children:"config.seed.ts"})}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-ts",children:'const configVariables: ConfigVariables = {\n // ...\n oauth: {\n // ...\n "YOUR_PROVIDER_NAME-enabled": {\n type: "boolean",\n defaultValue: "false",\n },\n "YOUR_PROVIDER_NAME-clientId": {\n type: "string",\n defaultValue: "",\n },\n "YOUR_PROVIDER_NAME-clientSecret": {\n type: "string",\n defaultValue: "",\n obscured: true,\n },\n },\n};\n'})}),"\n",(0,o.jsx)(n.h3,{id:"2-create-provider-class",children:"2. Create provider class"}),"\n",(0,o.jsx)(n.h4,{id:"generic-openid-connect",children:"Generic OpenID Connect"}),"\n",(0,o.jsxs)(n.p,{children:["If your provider supports OpenID connect, it's extremely easy to extend ",(0,o.jsx)(n.a,{href:"../backend/src/oauth/provider/genericOidc.provider.ts",children:(0,o.jsx)(n.code,{children:"GenericOidcProvider"})})," to add a new OpenID Connect provider."]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.a,{href:"../backend/src/oauth/provider/google.provider.ts",children:"Google provider"})," and ",(0,o.jsx)(n.a,{href:"../backend/src/oauth/provider/microsoft.provider.ts",children:"Microsoft provider"})," are good examples."]}),"\n",(0,o.jsx)(n.p,{children:"Here are some discovery URIs for popular providers:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Microsoft: ",(0,o.jsx)(n.code,{children:"https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration"})]}),"\n",(0,o.jsxs)(n.li,{children:["Google: ",(0,o.jsx)(n.code,{children:"https://accounts.google.com/.well-known/openid-configuration"})]}),"\n",(0,o.jsxs)(n.li,{children:["Apple: ",(0,o.jsx)(n.code,{children:"https://appleid.apple.com/.well-known/openid-configuration"})]}),"\n",(0,o.jsxs)(n.li,{children:["Gitlab: ",(0,o.jsx)(n.code,{children:"https://gitlab.com/.well-known/openid-configuration"})]}),"\n",(0,o.jsxs)(n.li,{children:["Huawei: ",(0,o.jsx)(n.code,{children:"https://oauth-login.cloud.huawei.com/.well-known/openid-configuration"})]}),"\n",(0,o.jsxs)(n.li,{children:["Paypal: ",(0,o.jsx)(n.code,{children:"https://www.paypal.com/.well-known/openid-configuration"})]}),"\n",(0,o.jsxs)(n.li,{children:["Yahoo: ",(0,o.jsx)(n.code,{children:"https://api.login.yahoo.com/.well-known/openid-configuration"})]}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"oauth-2",children:"OAuth 2"}),"\n",(0,o.jsxs)(n.p,{children:["If your provider only supports OAuth 2, you can implement ",(0,o.jsx)(n.a,{href:"../backend/src/oauth/provider/oauthProvider.interface.ts",children:(0,o.jsx)(n.code,{children:"OAuthProvider"})})," interface to add a new OAuth 2 provider."]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.a,{href:"../backend/src/oauth/provider/github.provider.ts",children:"GitHub provider"})," and ",(0,o.jsx)(n.a,{href:"../backend/src/oauth/provider/discord.provider.ts",children:"Discord provider"})," are good examples."]}),"\n",(0,o.jsx)(n.h3,{id:"3-register-provider",children:"3. Register provider"}),"\n",(0,o.jsxs)(n.p,{children:["Register your provider in ",(0,o.jsx)(n.a,{href:"../backend/src/oauth/oauth.module.ts",children:(0,o.jsx)(n.code,{children:"OAuthModule"})})," and ",(0,o.jsx)(n.a,{href:"../backend/src/oauth/dto/oauthSignIn.dto.ts",children:(0,o.jsx)(n.code,{children:"OAuthSignInDto"})}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-ts",children:'@Module({\n providers: [\n GitHubProvider,\n // your provider\n {\n provide: "OAUTH_PROVIDERS",\n useFactory(\n github: GitHubProvider /* your provider */\n ): Record<string, OAuthProvider<unknown>> {\n return {\n github,\n /* your provider */\n };\n },\n inject: [GitHubProvider /* your provider */],\n },\n ],\n})\nexport class OAuthModule {}\n'})}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-ts",children:'export interface OAuthSignInDto {\n provider:\n | "github"\n | "google"\n | "microsoft"\n | "discord"\n | "oidc" /* your provider*/;\n providerId: string;\n providerUsername: string;\n email: string;\n}\n'})}),"\n",(0,o.jsx)(n.h3,{id:"4-add-frontend-icon",children:"4. Add frontend icon"}),"\n",(0,o.jsxs)(n.p,{children:["Add an icon in ",(0,o.jsx)(n.a,{href:"../frontend/src/utils/oauth.util.tsx",children:(0,o.jsx)(n.code,{children:"oauth.util.tsx"})}),"."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-tsx",children:"const getOAuthIcon = (provider: string) => {\n return {\n github: <SiGithub />,\n /* your provider */\n }[provider];\n};\n"})}),"\n",(0,o.jsx)(n.h3,{id:"5-add-i18n-text",children:"5. Add i18n text"}),"\n",(0,o.jsxs)(n.p,{children:["Add keys below to your i18n text in ",(0,o.jsx)(n.a,{href:"../frontend/src/i18n/translations/en-US.ts",children:"locale file"}),"."]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"signIn.oauth.YOUR_PROVIDER_NAME"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"account.card.oauth.YOUR_PROVIDER_NAME"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"admin.config.oauth.YOUR_PROVIDER_NAME-enabled"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"admin.config.oauth.YOUR_PROVIDER_NAME-client-id"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"admin.config.oauth.YOUR_PROVIDER_NAME-client-secret"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"error.param.provider_YOUR_PROVIDER_NAME"})}),"\n",(0,o.jsx)(n.li,{children:"Other config keys you defined in step 1"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Congratulations! \ud83c\udf89 You have successfully added a new OAuth 2 provider! Pull requests are welcome if you want to share your provider with others."})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>s});var o=i(6540);const r={},t=o.createContext(r);function d(e){const n=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),o.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5e95c892.59168106.js b/assets/js/5e95c892.59168106.js new file mode 100644 index 0000000..9177567 --- /dev/null +++ b/assets/js/5e95c892.59168106.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[647],{7121:(e,s,n)=>{n.r(s),n.d(s,{default:()=>p});n(6540);var r=n(4164),c=n(1003),u=n(7559),a=n(2831),i=n(781),d=n(4848);function p(e){return(0,d.jsx)(c.e3,{className:(0,r.A)(u.G.wrapper.docsPages),children:(0,d.jsx)(i.A,{children:(0,a.v)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/assets/js/7cbc9cee.324e9707.js b/assets/js/7cbc9cee.324e9707.js new file mode 100644 index 0000000..86f4ea0 --- /dev/null +++ b/assets/js/7cbc9cee.324e9707.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[862],{4388:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docsSidebar":[{"type":"link","label":"Introduction","href":"/pingvin-share/introduction","docId":"introduction","unlisted":false},{"type":"category","label":"Getting Started","items":[{"type":"link","label":"Installation","href":"/pingvin-share/setup/installation","docId":"setup/installation","unlisted":false},{"type":"link","label":"Configuration","href":"/pingvin-share/setup/configuration","docId":"setup/configuration","unlisted":false},{"type":"link","label":"Integrations","href":"/pingvin-share/setup/integrations","docId":"setup/integrations","unlisted":false},{"type":"link","label":"OAuth 2 Login Guide","href":"/pingvin-share/setup/oauth2login","docId":"setup/oauth2login","unlisted":false},{"type":"link","label":"Upgrading","href":"/pingvin-share/setup/upgrading","docId":"setup/upgrading","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Helping Out","items":[{"type":"link","label":"Translating","href":"/pingvin-share/How to/translate","docId":"How to/translate","unlisted":false},{"type":"link","label":"Contributing","href":"/pingvin-share/How to/contribute","docId":"How to/contribute","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Learn more","href":"https://discord.gg/HutpbfB59Q"}]},"docs":{"How to/contribute":{"id":"How to/contribute","title":"Contributing","description":"We would \u2764\ufe0f for you to contribute to Pingvin Share and help make it better! All contributions are welcome, including issues, suggestions, pull requests and more.","sidebar":"docsSidebar"},"How to/translate":{"id":"How to/translate","title":"Translating","description":"You can help to translate Pingvin Share into your language.","sidebar":"docsSidebar"},"introduction":{"id":"introduction","title":"Introduction","description":"Pingvin Share is self-hosted file sharing platform and an alternative for WeTransfer.","sidebar":"docsSidebar"},"setup/configuration":{"id":"setup/configuration","title":"Configuration","description":"You can customize Pingvin Share like changing your domain by going to the configuration page in your admin dashboard /admin/config.","sidebar":"docsSidebar"},"setup/installation":{"id":"setup/installation","title":"Installation","description":"Installation with Docker (recommended)","sidebar":"docsSidebar"},"setup/integrations":{"id":"setup/integrations","title":"Integrations","description":"ClamAV (Docker only)","sidebar":"docsSidebar"},"setup/oauth2login":{"id":"setup/oauth2login","title":"OAuth 2 Login Guide","description":"Config Built-in OAuth 2 Providers","sidebar":"docsSidebar"},"setup/upgrading":{"id":"setup/upgrading","title":"Upgrading","description":"Upgrade to a new version","sidebar":"docsSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/a0d20388.cc3ff9b4.js b/assets/js/a0d20388.cc3ff9b4.js new file mode 100644 index 0000000..553b959 --- /dev/null +++ b/assets/js/a0d20388.cc3ff9b4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[537],{7744:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var o=t(4848),i=t(8453);const s={id:"integrations"},r="Integrations",a={id:"setup/integrations",title:"Integrations",description:"ClamAV (Docker only)",source:"@site/docs/setup/integrations.md",sourceDirName:"setup",slug:"/setup/integrations",permalink:"/pingvin-share/setup/integrations",draft:!1,unlisted:!1,editUrl:"https://github.com/stonith404/pingvin-share/docs/docs/docs/setup/integrations.md",tags:[],version:"current",frontMatter:{id:"integrations"},sidebar:"docsSidebar",previous:{title:"Configuration",permalink:"/pingvin-share/setup/configuration"},next:{title:"OAuth 2 Login Guide",permalink:"/pingvin-share/setup/oauth2login"}},c={},l=[{value:"ClamAV (Docker only)",id:"clamav-docker-only",level:4}];function d(e){const n={a:"a",code:"code",h1:"h1",h4:"h4",li:"li",ol:"ol",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"integrations",children:"Integrations"}),"\n",(0,o.jsx)(n.h4,{id:"clamav-docker-only",children:"ClamAV (Docker only)"}),"\n",(0,o.jsx)(n.p,{children:"ClamAV is used to scan shares for malicious files and remove them if found."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["Add the ClamAV container to the Docker Compose stack (see ",(0,o.jsx)(n.code,{children:"docker-compose.yml"}),") and start the container."]}),"\n",(0,o.jsx)(n.li,{children:"Docker will wait for ClamAV to start before starting Pingvin Share. This may take a minute or two."}),"\n",(0,o.jsx)(n.li,{children:'The Pingvin Share logs should now log "ClamAV is active"'}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Please note that ClamAV needs a lot of ",(0,o.jsx)(n.a,{href:"https://docs.clamav.net/manual/Installing/Docker.html#memory-ram-requirements",children:"ressources"}),"."]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var o=t(6540);const i={},s=o.createContext(i);function r(e){const n=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),o.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a7456010.91f0b3e9.js b/assets/js/a7456010.91f0b3e9.js new file mode 100644 index 0000000..72cb7dd --- /dev/null +++ b/assets/js/a7456010.91f0b3e9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[235],{8552:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/a7bd4aaa.96f06b44.js b/assets/js/a7bd4aaa.96f06b44.js new file mode 100644 index 0000000..165cdd9 --- /dev/null +++ b/assets/js/a7bd4aaa.96f06b44.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[98],{4532:(n,e,s)=>{s.r(e),s.d(e,{default:()=>d});s(6540);var r=s(1003),o=s(2967),i=s(2252),t=s(2831),c=s(1463),u=s(4848);function a(n){const{version:e}=n;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c.A,{version:e.version,tag:(0,o.tU)(e.pluginId,e.version)}),(0,u.jsx)(r.be,{children:e.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function l(n){const{version:e,route:s}=n;return(0,u.jsx)(r.e3,{className:e.className,children:(0,u.jsx)(i.n,{version:e,children:(0,t.v)(s.routes)})})}function d(n){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(a,{...n}),(0,u.jsx)(l,{...n})]})}}}]); \ No newline at end of file diff --git a/assets/js/a8c31fc1.34ec6f0d.js b/assets/js/a8c31fc1.34ec6f0d.js new file mode 100644 index 0000000..992d4c2 --- /dev/null +++ b/assets/js/a8c31fc1.34ec6f0d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[99],{3279:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>d});var i=t(4848),s=t(8453);const o={id:"installation"},l="Installation",r={id:"setup/installation",title:"Installation",description:"Installation with Docker (recommended)",source:"@site/docs/setup/installation.md",sourceDirName:"setup",slug:"/setup/installation",permalink:"/pingvin-share/setup/installation",draft:!1,unlisted:!1,editUrl:"https://github.com/stonith404/pingvin-share/docs/docs/docs/setup/installation.md",tags:[],version:"current",frontMatter:{id:"installation"},sidebar:"docsSidebar",previous:{title:"Introduction",permalink:"/pingvin-share/introduction"},next:{title:"Configuration",permalink:"/pingvin-share/setup/configuration"}},a={},d=[{value:"Installation with Docker (recommended)",id:"installation-with-docker-recommended",level:3},{value:"Stand-alone Installation",id:"stand-alone-installation",level:3}];function c(n){const e={a:"a",code:"code",h1:"h1",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...n.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.h1,{id:"installation",children:"Installation"}),"\n",(0,i.jsx)(e.h3,{id:"installation-with-docker-recommended",children:"Installation with Docker (recommended)"}),"\n",(0,i.jsxs)(e.ol,{children:["\n",(0,i.jsxs)(e.li,{children:["Download the ",(0,i.jsx)(e.code,{children:"docker-compose.yml"})," file"]}),"\n",(0,i.jsxs)(e.li,{children:["Run ",(0,i.jsx)(e.code,{children:"docker compose up -d"})]}),"\n"]}),"\n",(0,i.jsxs)(e.p,{children:["The website is now listening on ",(0,i.jsx)(e.code,{children:"http://localhost:3000"}),", have fun with Pingvin Share \ud83d\udc27!"]}),"\n",(0,i.jsx)(e.h3,{id:"stand-alone-installation",children:"Stand-alone Installation"}),"\n",(0,i.jsx)(e.p,{children:"Required tools:"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.a,{href:"https://nodejs.org/en/download/",children:"Node.js"})," >= 16"]}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"https://git-scm.com/downloads",children:"Git"})}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.a,{href:"https://pm2.keymetrics.io/",children:"pm2"})," for running Pingvin Share in the background"]}),"\n"]}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-bash",children:'git clone https://github.com/stonith404/pingvin-share\ncd pingvin-share\n\n# Checkout the latest version\ngit fetch --tags && git checkout $(git describe --tags `git rev-list --tags --max-count=1`)\n\n# Start the backend\ncd backend\nnpm install\nnpm run build\npm2 start --name="pingvin-share-backend" npm -- run prod\n\n# Start the frontend\ncd ../frontend\nnpm install\nnpm run build\nAPI_URL=http://localhost:8080 # Set the URL of the backend, default: http://localhost:8080\npm2 start --name="pingvin-share-frontend" .next/standalone/server.js\n'})}),"\n",(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:"Uploading Large Files"}),": By default, Pingvin Share uses a built-in reverse proxy to reduce the installation steps. However, this reverse proxy is not optimized for uploading large files. If you wish to upload larger files, you can either use the Docker installation or set up your own reverse proxy. An example configuration for Caddy can be found in ",(0,i.jsx)(e.code,{children:"./Caddyfile"}),"."]}),"\n",(0,i.jsxs)(e.p,{children:["The website is now listening on ",(0,i.jsx)(e.code,{children:"http://localhost:3000"}),", have fun with Pingvin Share \ud83d\udc27!"]})]})}function h(n={}){const{wrapper:e}={...(0,s.R)(),...n.components};return e?(0,i.jsx)(e,{...n,children:(0,i.jsx)(c,{...n})}):c(n)}},8453:(n,e,t)=>{t.d(e,{R:()=>l,x:()=>r});var i=t(6540);const s={},o=i.createContext(s);function l(n){const e=i.useContext(o);return i.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function r(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(s):n.components||s:l(n.components),i.createElement(o.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/a94703ab.eb98faa6.js b/assets/js/a94703ab.eb98faa6.js new file mode 100644 index 0000000..5111936 --- /dev/null +++ b/assets/js/a94703ab.eb98faa6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[48],{2559:(e,t,n)=>{n.r(t),n.d(t,{default:()=>be});var a=n(6540),o=n(4164),i=n(1003),s=n(7559),l=n(1754),r=n(6588),c=n(1312),d=n(3104),u=n(5062);const m={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};var b=n(4848);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:l}=(0,d.gk)();return(0,d.Mq)(((e,n)=>{let{scrollY:a}=e;const s=n?.scrollY;s&&(i.current?i.current=!1:a>=s?(l(),o(!1)):a<t?o(!1):a+window.innerHeight<document.documentElement.scrollHeight&&o(!0))})),(0,u.$)((e=>{e.location.hash&&(i.current=!0,o(!1))})),{shown:n,scrollToTop:()=>s(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.T)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.A)("clean-btn",s.G.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(3109),x=n(6347),f=n(4581),j=n(6342),v=n(3465);function g(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const _={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function A(e){let{onClick:t}=e;return(0,b.jsx)("button",{type:"button",title:(0,c.T)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.A)("button button--secondary button--outline",_.collapseSidebarButton),onClick:t,children:(0,b.jsx)(g,{className:_.collapseSidebarButtonIcon})})}var k=n(5041),C=n(9532);const S=Symbol("EmptyContext"),T=a.createContext(S);function N(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),i=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return(0,b.jsx)(T.Provider,{value:i,children:t})}var I=n(1422),B=n(9169),y=n(8774),w=n(2303);function L(e){let{collapsed:t,categoryLabel:n,onClick:a}=e;return(0,b.jsx)("button",{"aria-label":t?(0,c.T)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:n}):(0,c.T)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:n}),"aria-expanded":!t,type:"button",className:"clean-btn menu__caret",onClick:a})}function E(e){let{item:t,onItemClick:n,activePath:i,level:r,index:c,...d}=e;const{items:u,label:m,collapsible:h,className:p,href:x}=t,{docs:{sidebar:{autoCollapseCategories:f}}}=(0,j.p)(),v=function(e){const t=(0,w.A)();return(0,a.useMemo)((()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.Nr)(e):void 0),[e,t])}(t),g=(0,l.w8)(t,i),_=(0,B.ys)(x,i),{collapsed:A,setCollapsed:k}=(0,I.u)({initialState:()=>!!h&&(!g&&t.collapsed)}),{expandedItem:N,setExpandedItem:E}=function(){const e=(0,a.useContext)(T);if(e===S)throw new C.dV("DocSidebarItemsExpandedStateProvider");return e}(),M=function(e){void 0===e&&(e=!A),E(e?null:c),k(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const i=(0,C.ZC)(t);(0,a.useEffect)((()=>{t&&!i&&n&&o(!1)}),[t,i,n,o])}({isActive:g,collapsed:A,updateCollapsed:M}),(0,a.useEffect)((()=>{h&&null!=N&&N!==c&&f&&k(!0)}),[h,N,c,k,f]),(0,b.jsxs)("li",{className:(0,o.A)(s.G.docs.docSidebarItemCategory,s.G.docs.docSidebarItemCategoryLevel(r),"menu__list-item",{"menu__list-item--collapsed":A},p),children:[(0,b.jsxs)("div",{className:(0,o.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":_}),children:[(0,b.jsx)(y.A,{className:(0,o.A)("menu__link",{"menu__link--sublist":h,"menu__link--sublist-caret":!x&&h,"menu__link--active":g}),onClick:h?e=>{n?.(t),x?M(!1):(e.preventDefault(),M())}:()=>{n?.(t)},"aria-current":_?"page":void 0,role:h&&!x?"button":void 0,"aria-expanded":h&&!x?!A:void 0,href:h?v??"#":v,...d,children:m}),x&&h&&(0,b.jsx)(L,{collapsed:A,categoryLabel:m,onClick:e=>{e.preventDefault(),M()}})]}),(0,b.jsx)(I.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:A,children:(0,b.jsx)(U,{items:u,tabIndex:A?-1:0,onItemClick:n,activePath:i,level:r+1})})]})}var M=n(6654),H=n(3186);const G={menuExternalLink:"menuExternalLink_NmtK"};function W(e){let{item:t,onItemClick:n,activePath:a,level:i,index:r,...c}=e;const{href:d,label:u,className:m,autoAddBaseUrl:h}=t,p=(0,l.w8)(t,a),x=(0,M.A)(d);return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(i),"menu__list-item",m),children:(0,b.jsxs)(y.A,{className:(0,o.A)("menu__link",!x&&G.menuExternalLink,{"menu__link--active":p}),autoAddBaseUrl:h,"aria-current":p?"page":void 0,to:d,...x&&{onClick:n?()=>n(t):void 0},...c,children:[u,!x&&(0,b.jsx)(H.A,{})]})},u)}const P={menuHtmlItem:"menuHtmlItem_M9Kj"};function R(e){let{item:t,level:n,index:a}=e;const{value:i,defaultStyle:l,className:r}=t;return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(n),l&&[P.menuHtmlItem,"menu__list-item"],r),dangerouslySetInnerHTML:{__html:i}},a)}function D(e){let{item:t,...n}=e;switch(t.type){case"category":return(0,b.jsx)(E,{item:t,...n});case"html":return(0,b.jsx)(R,{item:t,...n});default:return(0,b.jsx)(W,{item:t,...n})}}function F(e){let{items:t,...n}=e;const a=(0,l.Y)(t,n.activePath);return(0,b.jsx)(N,{children:a.map(((e,t)=>(0,b.jsx)(D,{item:e,index:t,...n},t)))})}const U=(0,a.memo)(F),V={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function Y(e){let{path:t,sidebar:n,className:i}=e;const l=function(){const{isActive:e}=(0,k.M)(),[t,n]=(0,a.useState)(e);return(0,d.Mq)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.T)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.A)("menu thin-scrollbar",V.menu,l&&V.menuWithAnnouncementBar,i),children:(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(U,{items:n,activePath:t,level:1})})})}const K="sidebar_njMd",z="sidebarWithHideableNavbar_wUlq",q="sidebarHidden_VK0M",O="sidebarLogo_isFc";function J(e){let{path:t,sidebar:n,onCollapse:a,isHidden:i}=e;const{navbar:{hideOnScroll:s},docs:{sidebar:{hideable:l}}}=(0,j.p)();return(0,b.jsxs)("div",{className:(0,o.A)(K,s&&z,i&&q),children:[s&&(0,b.jsx)(v.A,{tabIndex:-1,className:O}),(0,b.jsx)(Y,{path:t,sidebar:n}),l&&(0,b.jsx)(A,{onClick:a})]})}const Q=a.memo(J);var X=n(5600),Z=n(9876);const $=e=>{let{sidebar:t,path:n}=e;const a=(0,Z.M)();return(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(U,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&a.toggle(),"link"===e.type&&a.toggle()},level:1})})};function ee(e){return(0,b.jsx)(X.GX,{component:$,props:e})}const te=a.memo(ee);function ne(e){const t=(0,f.l)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(Q,{...e}),a&&(0,b.jsx)(te,{...e})]})}const ae={expandButton:"expandButton_TmdG",expandButtonIcon:"expandButtonIcon_i1dp"};function oe(e){let{toggleSidebar:t}=e;return(0,b.jsx)("div",{className:ae.expandButton,title:(0,c.T)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t,children:(0,b.jsx)(g,{className:ae.expandButtonIcon})})}const ie={docSidebarContainer:"docSidebarContainer_YfHR",docSidebarContainerHidden:"docSidebarContainerHidden_DPk8",sidebarViewport:"sidebarViewport_aRkj"};function se(e){let{children:t}=e;const n=(0,r.t)();return(0,b.jsx)(a.Fragment,{children:t},n?.name??"noSidebar")}function le(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}=e;const{pathname:l}=(0,x.zy)(),[r,c]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{r&&c(!1),!r&&(0,p.O)()&&c(!0),i((e=>!e))}),[i,r]);return(0,b.jsx)("aside",{className:(0,o.A)(s.G.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&c(!0)},children:(0,b.jsx)(se,{children:(0,b.jsxs)("div",{className:(0,o.A)(ie.sidebarViewport,r&&ie.sidebarViewportHidden),children:[(0,b.jsx)(ne,{sidebar:t,path:l,onCollapse:d,isHidden:r}),r&&(0,b.jsx)(oe,{toggleSidebar:d})]})})})}const re={docMainContainer:"docMainContainer_TBSr",docMainContainerEnhanced:"docMainContainerEnhanced_lQrH",docItemWrapperEnhanced:"docItemWrapperEnhanced_JWYK"};function ce(e){let{hiddenSidebarContainer:t,children:n}=e;const a=(0,r.t)();return(0,b.jsx)("main",{className:(0,o.A)(re.docMainContainer,(t||!a)&&re.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,o.A)("container padding-top--md padding-bottom--lg",re.docItemWrapper,t&&re.docItemWrapperEnhanced),children:n})})}const de={docRoot:"docRoot_UBD9",docsWrapper:"docsWrapper_hBAB"};function ue(e){let{children:t}=e;const n=(0,r.t)(),[o,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:de.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:de.docRoot,children:[n&&(0,b.jsx)(le,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:i}),(0,b.jsx)(ce,{hiddenSidebarContainer:o,children:t})]})]})}var me=n(3363);function be(e){const t=(0,l.B5)(e);if(!t)return(0,b.jsx)(me.A,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(i.e3,{className:(0,o.A)(s.G.page.docsDocPage),children:(0,b.jsx)(r.V,{name:a,items:c,children:(0,b.jsx)(ue,{children:n})})})}},3363:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var a=n(4164),o=n(1312),i=n(1107),s=n(4848);function l(e){let{className:t}=e;return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",t),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(i.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]); \ No newline at end of file diff --git a/assets/js/aba21aa0.ad2b3c84.js b/assets/js/aba21aa0.ad2b3c84.js new file mode 100644 index 0000000..7d84e3b --- /dev/null +++ b/assets/js/aba21aa0.ad2b3c84.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[742],{7093:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/d131c913.b751eb49.js b/assets/js/d131c913.b751eb49.js new file mode 100644 index 0000000..4fb50e7 --- /dev/null +++ b/assets/js/d131c913.b751eb49.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[126],{3833:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>s,default:()=>a,frontMatter:()=>d,metadata:()=>c,toc:()=>h});var t=i(4848),r=i(8453);const d={id:"configuration"},s="Configuration",c={id:"setup/configuration",title:"Configuration",description:"You can customize Pingvin Share like changing your domain by going to the configuration page in your admin dashboard /admin/config.",source:"@site/docs/setup/configuration.md",sourceDirName:"setup",slug:"/setup/configuration",permalink:"/pingvin-share/setup/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/stonith404/pingvin-share/docs/docs/docs/setup/configuration.md",tags:[],version:"current",frontMatter:{id:"configuration"},sidebar:"docsSidebar",previous:{title:"Installation",permalink:"/pingvin-share/setup/installation"},next:{title:"Integrations",permalink:"/pingvin-share/setup/integrations"}},o={},h=[{value:"Environment variables",id:"environment-variables",level:4},{value:"Backend",id:"backend",level:5},{value:"Frontend",id:"frontend",level:5}];function l(e){const n={code:"code",h1:"h1",h4:"h4",h5:"h5",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"configuration",children:"Configuration"}),"\n",(0,t.jsxs)(n.p,{children:["You can customize Pingvin Share like changing your domain by going to the configuration page in your admin dashboard ",(0,t.jsx)(n.code,{children:"/admin/config"}),"."]}),"\n",(0,t.jsx)(n.h4,{id:"environment-variables",children:"Environment variables"}),"\n",(0,t.jsx)(n.p,{children:"For installation specific configuration, you can use environment variables. The following variables are available:"}),"\n",(0,t.jsx)(n.h5,{id:"backend",children:"Backend"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default Value"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"PORT"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"8080"})}),(0,t.jsx)(n.td,{children:"The port on which the backend listens."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"DATABASE_URL"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"file:../data/pingvin-share.db?connection_limit=1"})}),(0,t.jsx)(n.td,{children:"The URL of the SQLite database."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"DATA_DIRECTORY"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"./data"})}),(0,t.jsx)(n.td,{children:"The directory where data is stored."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"CLAMAV_HOST"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"127.0.0.1"})}),(0,t.jsx)(n.td,{children:"The IP address of the ClamAV server."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"CLAMAV_PORT"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"3310"})}),(0,t.jsx)(n.td,{children:"The port number of the ClamAV server."})]})]})]}),"\n",(0,t.jsx)(n.h5,{id:"frontend",children:"Frontend"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default Value"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"PORT"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"3000"})}),(0,t.jsx)(n.td,{children:"The port on which the frontend listens."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"API_URL"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"http://localhost:8080"})}),(0,t.jsx)(n.td,{children:"The URL of the backend for the frontend."})]})]})]})]})}function a(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>c});var t=i(6540);const r={},d=t.createContext(r);function s(e){const n=t.useContext(d);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ffb3bb1a.e6fb6a6c.js b/assets/js/ffb3bb1a.e6fb6a6c.js new file mode 100644 index 0000000..844c438 --- /dev/null +++ b/assets/js/ffb3bb1a.e6fb6a6c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[284],{3750:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>a,frontMatter:()=>r,metadata:()=>l,toc:()=>d});var s=t(4848),i=t(8453);const r={},o="Contributing",l={id:"How to/contribute",title:"Contributing",description:"We would \u2764\ufe0f for you to contribute to Pingvin Share and help make it better! All contributions are welcome, including issues, suggestions, pull requests and more.",source:"@site/docs/How to/contribute.md",sourceDirName:"How to",slug:"/How to/contribute",permalink:"/pingvin-share/How to/contribute",draft:!1,unlisted:!1,editUrl:"https://github.com/stonith404/pingvin-share/docs/docs/docs/How to/contribute.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Translating",permalink:"/pingvin-share/How to/translate"}},c={},d=[{value:"Getting started",id:"getting-started",level:2},{value:"Submit a Pull Request",id:"submit-a-pull-request",level:2},{value:"Setup project",id:"setup-project",level:2},{value:"Backend",id:"backend",level:3},{value:"Setup",id:"setup",level:4},{value:"Frontend",id:"frontend",level:3},{value:"Setup",id:"setup-1",level:4},{value:"Testing",id:"testing",level:3}];function h(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components},{Details:t}=n;return t||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"contributing",children:"Contributing"}),"\n",(0,s.jsx)(n.p,{children:"We would \u2764\ufe0f for you to contribute to Pingvin Share and help make it better! All contributions are welcome, including issues, suggestions, pull requests and more."}),"\n",(0,s.jsx)(n.h2,{id:"getting-started",children:"Getting started"}),"\n",(0,s.jsx)(n.p,{children:"You've found a bug, have suggestion or something else, just create an issue on GitHub and we can get in touch \ud83d\ude0a."}),"\n",(0,s.jsx)(n.h2,{id:"submit-a-pull-request",children:"Submit a Pull Request"}),"\n",(0,s.jsx)(n.p,{children:"Before you submit the pull request for review please ensure that"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["The pull request naming follows the ",(0,s.jsx)(n.a,{href:"https://www.conventionalcommits.org",children:"Conventional Commits specification"}),":"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"<type>[optional scope]: <description>"})}),"\n",(0,s.jsx)(n.p,{children:"example:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"feat(share): add password protection\n"})}),"\n",(0,s.jsxs)(n.p,{children:["When ",(0,s.jsx)(n.code,{children:"TYPE"})," can be:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"feat"})," - is a new feature"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"doc"})," - documentation only changes"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"fix"})," - a bug fix"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"refactor"})," - code change that neither fixes a bug nor adds a feature"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Your pull request has a detailed description"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["You run ",(0,s.jsx)(n.code,{children:"npm run format"})," to format the code"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:"Don't know how to create a pull request? Learn how to create a pull request"}),(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Create a fork of the repository by clicking on the ",(0,s.jsx)(n.code,{children:"Fork"})," button in the Pingvin Share repository"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Clone your fork to your machine with ",(0,s.jsx)(n.code,{children:"git clone"})]}),"\n"]}),"\n"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ git clone https://github.com/[your_username]/pingvin-share\n"})}),(0,s.jsxs)(n.ol,{start:"3",children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Work - commit - repeat"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Push changes to GitHub"}),"\n"]}),"\n"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ git push origin [name_of_your_new_branch]\n"})}),(0,s.jsxs)(n.ol,{start:"5",children:["\n",(0,s.jsxs)(n.li,{children:["Submit your changes for review\nIf you go to your repository on GitHub, you'll see a ",(0,s.jsx)(n.code,{children:"Compare & pull request"})," button. Click on that button."]}),"\n",(0,s.jsx)(n.li,{children:"Start a Pull Request"}),"\n",(0,s.jsxs)(n.li,{children:["Now submit the pull request and click on ",(0,s.jsx)(n.code,{children:"Create pull request"}),"."]}),"\n",(0,s.jsx)(n.li,{children:"Get a code review approval/reject"}),"\n"]})]}),"\n",(0,s.jsx)(n.h2,{id:"setup-project",children:"Setup project"}),"\n",(0,s.jsx)(n.p,{children:"Pingvin Share consists of a frontend and a backend."}),"\n",(0,s.jsx)(n.h3,{id:"backend",children:"Backend"}),"\n",(0,s.jsxs)(n.p,{children:["The backend is built with ",(0,s.jsx)(n.a,{href:"https://nestjs.com",children:"Nest.js"})," and uses Typescript."]}),"\n",(0,s.jsx)(n.h4,{id:"setup",children:"Setup"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Open the ",(0,s.jsx)(n.code,{children:"backend"})," folder"]}),"\n",(0,s.jsxs)(n.li,{children:["Install the dependencies with ",(0,s.jsx)(n.code,{children:"npm install"})]}),"\n",(0,s.jsxs)(n.li,{children:["Push the database schema to the database by running ",(0,s.jsx)(n.code,{children:"npx prisma db push"})]}),"\n",(0,s.jsxs)(n.li,{children:["Seed the database with ",(0,s.jsx)(n.code,{children:"npx prisma db seed"})]}),"\n",(0,s.jsxs)(n.li,{children:["Start the backend with ",(0,s.jsx)(n.code,{children:"npm run dev"})]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"frontend",children:"Frontend"}),"\n",(0,s.jsxs)(n.p,{children:["The frontend is built with ",(0,s.jsx)(n.a,{href:"https://nextjs.org",children:"Next.js"})," and uses Typescript."]}),"\n",(0,s.jsx)(n.h4,{id:"setup-1",children:"Setup"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Start the backend first"}),"\n",(0,s.jsxs)(n.li,{children:["Open the ",(0,s.jsx)(n.code,{children:"frontend"})," folder"]}),"\n",(0,s.jsxs)(n.li,{children:["Install the dependencies with ",(0,s.jsx)(n.code,{children:"npm install"})]}),"\n",(0,s.jsxs)(n.li,{children:["Start the frontend with ",(0,s.jsx)(n.code,{children:"npm run dev"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"You're all set!"}),"\n",(0,s.jsx)(n.h3,{id:"testing",children:"Testing"}),"\n",(0,s.jsxs)(n.p,{children:["At the moment we only have system tests for the backend. To run these tests, run ",(0,s.jsx)(n.code,{children:"npm run test:system"})," in the backend folder."]})]})}function a(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>l});var s=t(6540);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.876bc575.js b/assets/js/main.876bc575.js new file mode 100644 index 0000000..2151446 --- /dev/null +++ b/assets/js/main.876bc575.js @@ -0,0 +1,2 @@ +/*! For license information please see main.876bc575.js.LICENSE.txt */ +(self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[]).push([[792],{8328:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(6540);var r=n(3259),a=n.n(r),o=n(4054);const i={"0e384e19":[()=>n.e(976).then(n.bind(n,619)),"@site/docs/intro.md",619],17896441:[()=>Promise.all([n.e(869),n.e(401)]).then(n.bind(n,4313)),"@theme/DocItem",4313],"1df93b7f":[()=>n.e(583).then(n.bind(n,6866)),"@site/src/pages/index.tsx",6866],"3205bd6d":[()=>n.e(361).then(n.bind(n,2744)),"@site/docs/setup/upgrading.md",2744],"36493d4b":[()=>n.e(202).then(n.bind(n,3439)),"@site/docs/How to/translate.md",3439],"3f2e6990":[()=>n.e(819).then(n.bind(n,3403)),"@site/docs/setup/oauth2login.md",3403],"5e95c892":[()=>n.e(647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"7cbc9cee":[()=>n.e(862).then(n.t.bind(n,4388,19)),"@generated/docusaurus-plugin-content-docs/default/p/pingvin-share-7a3.json",4388],a0d20388:[()=>n.e(537).then(n.bind(n,7744)),"@site/docs/setup/integrations.md",7744],a7456010:[()=>n.e(235).then(n.t.bind(n,8552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",8552],a7bd4aaa:[()=>n.e(98).then(n.bind(n,4532)),"@theme/DocVersionRoot",4532],a8c31fc1:[()=>n.e(99).then(n.bind(n,3279)),"@site/docs/setup/installation.md",3279],a94703ab:[()=>Promise.all([n.e(869),n.e(48)]).then(n.bind(n,2559)),"@theme/DocRoot",2559],aba21aa0:[()=>n.e(742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],d131c913:[()=>n.e(126).then(n.bind(n,3833)),"@site/docs/setup/configuration.md",3833],ffb3bb1a:[()=>n.e(284).then(n.bind(n,3750)),"@site/docs/How to/contribute.md",3750]};var l=n(4848);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(6921),c=n(3102);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,l.jsx)(c.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],m=(0,u.A)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;delete a.__context;const s=a.__props;return delete a.__props,(0,l.jsx)(c.W,{value:i,children:(0,l.jsx)(o,{...a,...s,...n})})}})}const p=[{path:"/pingvin-share/",component:d("/pingvin-share/","3d6"),exact:!0},{path:"/pingvin-share/",component:d("/pingvin-share/","9bf"),routes:[{path:"/pingvin-share/",component:d("/pingvin-share/","859"),routes:[{path:"/pingvin-share/",component:d("/pingvin-share/","0bf"),routes:[{path:"/pingvin-share/How to/contribute",component:d("/pingvin-share/How to/contribute","d16"),exact:!0,sidebar:"docsSidebar"},{path:"/pingvin-share/How to/translate",component:d("/pingvin-share/How to/translate","27d"),exact:!0,sidebar:"docsSidebar"},{path:"/pingvin-share/introduction",component:d("/pingvin-share/introduction","5fa"),exact:!0,sidebar:"docsSidebar"},{path:"/pingvin-share/setup/configuration",component:d("/pingvin-share/setup/configuration","710"),exact:!0,sidebar:"docsSidebar"},{path:"/pingvin-share/setup/installation",component:d("/pingvin-share/setup/installation","4f3"),exact:!0,sidebar:"docsSidebar"},{path:"/pingvin-share/setup/integrations",component:d("/pingvin-share/setup/integrations","30f"),exact:!0,sidebar:"docsSidebar"},{path:"/pingvin-share/setup/oauth2login",component:d("/pingvin-share/setup/oauth2login","1ca"),exact:!0,sidebar:"docsSidebar"},{path:"/pingvin-share/setup/upgrading",component:d("/pingvin-share/setup/upgrading","1a5"),exact:!0,sidebar:"docsSidebar"}]}]}]},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(6540),a=n(4848);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},8536:(e,t,n)=>{"use strict";var r=n(6540),a=n(5338),o=n(545),i=n(4625),l=n(4784),s=n(8193);const u=[n(119),n(6134),n(6294)];var c=n(8328),d=n(6347),p=n(2831),f=n(4848);function m(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var g=n(5260),h=n(4586),y=n(6025),b=n(6342),v=n(1003),w=n(2131),k=n(4090),x=n(2967),S=n(440),E=n(1463);function C(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.A)(),r=(0,w.o)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,f.jsxs)(g.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function A(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.A)(),{pathname:r}=(0,d.zy)();return e+(0,S.applyTrailingSlash)((0,y.Ay)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function _(){const{i18n:{currentLocale:e}}=(0,h.A)(),{metadata:t,image:n}=(0,b.p)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:k.w})]}),n&&(0,f.jsx)(v.be,{image:n}),(0,f.jsx)(A,{}),(0,f.jsx)(C,{}),(0,f.jsx)(E.A,{tag:x.Cy,locale:e}),(0,f.jsx)(g.A,{children:t.map(((e,t)=>(0,f.jsx)("meta",{...e},t)))})]})}const T=new Map;var j=n(6125),N=n(6988),L=n(205);function R(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=u.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,L.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),R("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,p.u)(c.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?R("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(P,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(d.qh,{location:t,render:()=>e})})}}const I=D,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${F}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${z}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n document.body.prepend(bannerContainer);\n var suggestionContainer = document.getElementById('${z}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function $(){const{siteConfig:{baseUrl:e}}=(0,h.A)();return(0,f.jsx)(f.Fragment,{children:!s.A.canUseDOM&&(0,f.jsx)(g.A,{children:(0,f.jsx)("script",{children:B(e)})})})}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.A)(),{pathname:n}=(0,d.zy)();return t&&n===e?(0,f.jsx)($,{}):null}function q(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:a}}=(0,h.A)(),o=(0,y.Ay)(e),{htmlLang:i,direction:l}=a[r];return(0,f.jsxs)(g.A,{children:[(0,f.jsx)("html",{lang:i,dir:l}),(0,f.jsx)("title",{children:t}),(0,f.jsx)("meta",{property:"og:title",content:t}),(0,f.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&(0,f.jsx)("meta",{name:"robots",content:"noindex, nofollow"}),e&&(0,f.jsx)("link",{rel:"icon",href:o})]})}var H=n(7489),G=n(2303);function V(){const e=(0,G.A)();return(0,f.jsx)(g.A,{children:(0,f.jsx)("html",{"data-has-hydrated":e})})}const W=(0,p.v)(c.A);function Q(){const e=function(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,p.u)(c.A,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,f.jsx)(I,{location:e,children:W})}function K(){return(0,f.jsx)(H.A,{children:(0,f.jsx)(N.l,{children:(0,f.jsxs)(j.x,{children:[(0,f.jsxs)(m,{children:[(0,f.jsx)(q,{}),(0,f.jsx)(_,{}),(0,f.jsx)(U,{}),(0,f.jsx)(Q,{})]}),(0,f.jsx)(V,{})]})})})}var Y=n(4054);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var X=n(6921);const J=new Set,ee=new Set,te=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ne={prefetch:e=>{if(!(e=>!te()&&!ee.has(e)&&!J.has(e))(e))return!1;J.add(e);const t=(0,p.u)(c.A,e).flatMap((e=>{return t=e.route.path,Object.entries(Y).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,X.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!te()&&!ee.has(e))(e)&&(ee.add(e),O(e))},re=Object.freeze(ne);function ae(e){let{children:t}=e;return"hash"===l.default.future.experimental_router?(0,f.jsx)(i.I9,{children:t}):(0,f.jsx)(i.Kd,{children:t})}const oe=Boolean(!0);if(s.A.canUseDOM){window.docusaurus=re;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(o.vd,{children:(0,f.jsx)(ae,{children:(0,f.jsx)(K,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(oe)window.docusaurusRoot=a.hydrateRoot(e,t,{onRecoverableError:n});else{const r=a.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};O(window.location.pathname).then((()=>{(0,r.startTransition)(i)}))}},6988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(6540),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/pingvin-share/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/pingvin-share/","mainDocId":"introduction","docs":[{"id":"How to/contribute","path":"/pingvin-share/How to/contribute","sidebar":"docsSidebar"},{"id":"How to/translate","path":"/pingvin-share/How to/translate","sidebar":"docsSidebar"},{"id":"introduction","path":"/pingvin-share/introduction","sidebar":"docsSidebar"},{"id":"setup/configuration","path":"/pingvin-share/setup/configuration","sidebar":"docsSidebar"},{"id":"setup/installation","path":"/pingvin-share/setup/installation","sidebar":"docsSidebar"},{"id":"setup/integrations","path":"/pingvin-share/setup/integrations","sidebar":"docsSidebar"},{"id":"setup/oauth2login","path":"/pingvin-share/setup/oauth2login","sidebar":"docsSidebar"},{"id":"setup/upgrading","path":"/pingvin-share/setup/upgrading","sidebar":"docsSidebar"}],"draftIds":[],"sidebars":{"docsSidebar":{"link":{"path":"/pingvin-share/introduction","label":"introduction"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"3.4.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.4.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.4.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.4.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.4.0"}}}');var u=n(4848);const c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(c);function p(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(6540),a=n(8193),o=n(5260),i=n(440),l=n(781),s=n(3102),u=n(4848);function c(e){let{error:t,tryAgain:n}=e;return(0,u.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,u.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,u.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,u.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){let{children:t}=e;return(0,u.jsx)(s.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function f(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)(p,{children:(0,u.jsxs)(g,{fallback:()=>(0,u.jsx)(c,{error:t,tryAgain:n}),children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("title",{children:"Page Error"})}),(0,u.jsx)(l.A,{children:(0,u.jsx)(c,{error:t,tryAgain:n})})]})})}const m=e=>(0,u.jsx)(f,{...e});class g extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??m)(e)}return e??null}}},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(545),a=n(4848);function o(e){return(0,a.jsx)(r.mg,{...e})}},8774:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540),a=n(4625),o=n(440),i=n(4586),l=n(6654),s=n(8193),u=n(3427),c=n(6025),d=n(4848);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:v}=(0,i.A)(),{trailingSlash:w,baseUrl:k}=v,x=v.future.experimental_router,{withBaseUrl:S}=(0,c.hH)(),E=(0,u.A)(),C=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>C.current));const A=p||f;const _=(0,l.A)(A),T=A?.replace("pathname://","");let j=void 0!==T?(N=T,y&&(e=>e.startsWith("/"))(N)?S(N):N):void 0;var N;"hash"===x&&j?.startsWith("./")&&(j=j?.slice(1)),j&&_&&(j=(0,o.applyTrailingSlash)(j,{trailingSlash:w,baseUrl:k}));const L=(0,r.useRef)(!1),R=n?a.k2:a.N_,P=s.A.canUseIntersectionObserver,O=(0,r.useRef)(),D=()=>{L.current||null==j||(window.docusaurus.preload(j),L.current=!0)};(0,r.useEffect)((()=>(!P&&_&&null!=j&&window.docusaurus.prefetch(j),()=>{P&&O.current&&O.current.disconnect()})),[O,j,P,_]);const I=j?.startsWith("#")??!1,M=!b.target||"_self"===b.target,F=!j||!_||!M;return h||!I&&F||E.collectLink(j),b.id&&E.collectAnchor(b.id),F?(0,d.jsx)("a",{ref:C,href:j,...A&&!_&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,d.jsx)(R,{...b,onMouseEnter:D,onTouchStart:D,innerRef:e=>{C.current=e,P&&e&&_&&(O.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(O.current.unobserve(e),O.current.disconnect(),null!=j&&window.docusaurus.prefetch(j))}))})),O.current.observe(e))},to:j,...n&&{isActive:g,activeClassName:m}})}const f=r.forwardRef(p)},418:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=()=>null},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>u,T:()=>s});var r=n(6540),a=n(4848);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(2654);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return o(l({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const i=l({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},6654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},6025:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>l,hH:()=>i});var r=n(6540),a=n(4586),o=n(6654);function i(){const{siteConfig:e}=(0,a.A)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,l=(0,r.useCallback)(((e,r)=>function(e){let{siteUrl:t,baseUrl:n,url:r,options:{forcePrependBaseUrl:a=!1,absolute:i=!1}={},router:l}=e;if(!r||r.startsWith("#")||(0,o.z)(r))return r;if("hash"===l)return r.startsWith("/")?`.${r}`:`./${r}`;if(a)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;const s=r.startsWith(n)?r:n+r.replace(/^\//,"");return i?t+s:s}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})),[n,t,i]);return{withBaseUrl:l}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},3427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540);n(4848);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6988);function o(){return(0,r.useContext)(a.o)}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540);const a=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(6540),a=n(4848);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:l,children:t})}},4070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>g,vT:()=>p,Gy:()=>c,HW:()=>h,ht:()=>d,r7:()=>m,jh:()=>f});var r=n(6347),a=n(4586),o=n(7065);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>{try{return function(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function p(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.zy)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function f(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function g(e){const t=d(e),{pathname:n}=(0,r.zy)();return s(t,n)}function h(e){const t=d(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},6294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},6134:(e,t,n)=>{"use strict";var r=n(1765),a=n(4784);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(9700),n(8692)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(6540);var r=n(4164),a=n(1312),o=n(6342),i=n(8774),l=n(3427);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var u=n(4848);function c(e){let{as:t,id:n,...c}=e;const d=(0,l.A)(),{navbar:{hideOnScroll:p}}=(0,o.p)();if("h1"===t||!n)return(0,u.jsx)(t,{...c,id:void 0});d.collectAnchor(n);const f=(0,a.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,u.jsxs)(t,{...c,className:(0,r.A)("anchor",p?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,u.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(4848);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},781:(e,t,n)=>{"use strict";n.d(t,{A:()=>ft});var r=n(6540),a=n(4164),o=n(7489),i=n(1003),l=n(6347),s=n(1312),u=n(5062),c=n(4848);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var h=n(7559),y=n(4090);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,c.jsx)(g,{className:b.skipToContent})}var w=n(6342),k=n(5041);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:a,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.A)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const C={content:"content_knG7"};function A(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,a.A)(C.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const _={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function T(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.M)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,c.jsxs)("div",{className:_.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,c.jsx)("div",{className:_.announcementBarPlaceholder}),(0,c.jsx)(A,{className:_.announcementBarContent}),o&&(0,c.jsx)(E,{onClick:n,className:_.announcementBarClose})]})}var j=n(9876),N=n(3104);var L=n(9532),R=n(5600);const P=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,j.M)(),t=(0,R.YL)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,L.ZC)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,c.jsx)(P.Provider,{value:n,children:t})}function D(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function I(){const e=(0,r.useContext)(P);if(!e)throw new L.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,R.YL)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:D(o)})),[a,o,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=I();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(5293),z=n(2303);function B(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,z.A)(),l=(0,s.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,a.A)(U.toggle,t),children:(0,c.jsxs)("button",{className:(0,a.A)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,c.jsx)(B,{className:(0,a.A)(U.toggleIcon,U.lightToggleIcon)}),(0,c.jsx)($,{className:(0,a.A)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function V(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,F.G)();return r?null:(0,c.jsx)(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var W=n(3465);function Q(){return(0,c.jsx)(W.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,j.M)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Y(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(Q,{}),(0,c.jsx)(V,{className:"margin-right--md"}),(0,c.jsx)(K,{})]})}var Z=n(8774),X=n(6025),J=n(6654);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(3186);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...u}=e;const d=(0,X.Ay)(r),p=(0,X.Ay)(t),f=(0,X.Ay)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,J.A)(a),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[o,m&&(0,c.jsx)(te.A,{...l&&{width:12,height:12}})]})};return a?(0,c.jsx)(Z.A,{href:s?f:a,...u,...g}):(0,c.jsx)(Z.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...u,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,c.jsx)(ne,{className:(0,a.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,a.A)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,c.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(1422),le=n(9169),se=n(4586);const ue={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.ys)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,c.jsxs)("div",{ref:s,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,a.A)("navbar__link",o),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:l.children??l.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Ce,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:o,onClick:i,...s}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),(0,c.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,c.jsx)(ne,{role:"button",className:(0,a.A)(ue.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),f()},children:s.children??s.label}),(0,c.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Ce,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,c.jsx)(r,{...n})}var me=n(2131);function ge(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const he="iconLanguage_nlXk";var ye=n(418);const be={navbarSearchContainer:"navbarSearchContainer_Bca1"};function ve(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,a.A)(n,be.navbarSearchContainer),children:t})}var we=n(4070),ke=n(1754);var xe=n(5597);const Se=e=>e.docs.find((t=>t.id===e.mainDocId));const Ee={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.A)(),p=(0,me.o)(),{search:f,hash:m}=(0,l.zy)(),g=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],h=t?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(fe,{...o,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ge,{className:he}),h]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(ve,{className:n,children:(0,c.jsx)(ye.A,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,c.jsx)(i,{className:(0,a.A)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.zK)(r),i=(0,ke.QB)(t,r),l=o?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>l||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.zK)(r),i=(0,ke.fW)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,ke.Vd)(r)[0],i=t??o.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,c.jsx)(oe,{...a,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:u,hash:d}=(0,l.zy)(),p=(0,we.zK)(n),f=(0,we.jh)(n),{savePreferredVersionName:m}=(0,xe.g1)(n),g=[...a,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Se(e);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...o],h=(0,ke.Vd)(n)[0],y=t&&g.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,b=t&&g.length>1?void 0:Se(h).path;return g.length<=1?(0,c.jsx)(oe,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(fe,{...i,mobile:t,label:y,to:b,items:g,isActive:r?()=>!1:void 0})}};function Ce(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Ee[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(a,{...n})}function Ae(){const e=(0,j.M)(),t=(0,w.p)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Ce,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function _e(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Te(){const e=0===(0,w.p)().navbar.items.length,t=I();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(_e,{onClick:()=>t.hide()}),t.content]})}function je(){const e=(0,j.M)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(M,{header:(0,c.jsx)(Y,{}),primaryMenu:(0,c.jsx)(Ae,{}),secondaryMenu:(0,c.jsx)(Te,{})}):null}const Ne={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Le(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,a.A)("navbar-sidebar__backdrop",e.className)})}function Re(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.p)(),i=(0,j.M)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,N.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=r?.scrollY,s=document.documentElement.scrollHeight-o.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,u.$)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:l,"aria-label":(0,s.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.A)("navbar","navbar--fixed-top",n&&[Ne.navbarHideable,!d&&Ne.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Le,{onClick:i.toggle}),(0,c.jsx)(je,{})]})}var Pe=n(440);const Oe={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function De(e){return(0,c.jsx)("button",{type:"button",...e,children:(0,c.jsx)(s.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function Ie(e){let{error:t}=e;const n=(0,Pe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{className:Oe.errorBoundaryError,children:n})}class Me extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Fe="right";function ze(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Be(){const{toggle:e,shown:t}=(0,j.M)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(ze,{})})}const $e={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(Me,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(Ce,{...e})},t)))})}function qe(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function He(){const e=(0,j.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Fe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,c.jsx)(qe,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(Be,{}),(0,c.jsx)(Q,{}),(0,c.jsx)(Ue,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Ue,{items:r}),(0,c.jsx)(V,{className:$e.colorModeToggle}),!a&&(0,c.jsx)(ve,{children:(0,c.jsx)(ye.A,{})})]})})}function Ge(){return(0,c.jsx)(Re,{children:(0,c.jsx)(He,{})})}function Ve(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,l=(0,X.Ay)(n),s=(0,X.Ay)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(Z.A,{className:"footer__link-item",...r?{href:o?s:r}:{to:l},...i,children:[a,r&&!(0,J.A)(r)&&(0,c.jsx)(te.A,{})]})}function We(e){let{item:t}=e;return t.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(Ve,{item:t})},t.href??t.to)}function Qe(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(We,{item:e},t)))})]})}function Ke(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(Qe,{column:e},t)))})}function Ye(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function Ze(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(Ve,{item:t})}function Xe(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(Ze,{item:e}),t.length!==n+1&&(0,c.jsx)(Ye,{})]},n)))})})}function Je(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(Ke,{columns:t}):(0,c.jsx)(Xe,{links:t})}var et=n(1122);const tt={footerLogoLink:"footerLogoLink_BH7S"};function nt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.hH)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(et.A,{className:(0,a.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function rt(e){let{logo:t}=e;return t.href?(0,c.jsx)(Z.A,{href:t.href,className:tt.footerLogoLink,target:t.target,children:(0,c.jsx)(nt,{logo:t})}):(0,c.jsx)(nt,{logo:t})}function at(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function ot(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,c.jsx)("footer",{className:(0,a.A)("footer",{"footer--dark":"dark"===t}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function it(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,c.jsx)(ot,{style:a,links:n&&n.length>0&&(0,c.jsx)(Je,{links:n}),logo:r&&(0,c.jsx)(rt,{logo:r}),copyright:t&&(0,c.jsx)(at,{copyright:t})})}const lt=r.memo(it),st=(0,L.fM)([F.a,k.o,N.Tv,xe.VQ,i.Jx,function(e){let{children:t}=e;return(0,c.jsx)(R.y_,{children:(0,c.jsx)(j.e,{children:(0,c.jsx)(O,{children:t})})})}]);function ut(e){let{children:t}=e;return(0,c.jsx)(st,{children:t})}var ct=n(1107);function dt(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(ct.A,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(De,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(Ie,{error:t})})]})})})}const pt={mainWrapper:"mainWrapper_z2l0"};function ft(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.J)(),(0,c.jsxs)(ut,{children:[(0,c.jsx)(i.be,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(T,{}),(0,c.jsx)(Ge,{}),(0,c.jsx)("div",{id:d,className:(0,a.A)(h.G.wrapper.main,pt.mainWrapper,r),children:(0,c.jsx)(o.A,{fallback:e=>(0,c.jsx)(dt,{...e}),children:t})}),!n&&(0,c.jsx)(lt,{})]})}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(6540);var r=n(8774),a=n(6025),o=n(4586),i=n(6342),l=n(1122),s=n(4848);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Ay)(t.src),dark:(0,a.Ay)(t.srcDark||t.src)},i=(0,s.jsx)(l.A,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,o.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:c,titleClassName:d,...p}=e,f=(0,a.Ay)(l?.href||"/"),m=n?"":t,g=l?.alt??m;return(0,s.jsxs)(r.A,{to:f,...p,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:g,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(5260),a=n(4848);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.A,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(6540),a=n(4164),o=n(2303),i=n(5293);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(4848);function u(e){let{className:t,children:n}=e;const u=(0,o.A)(),{colorMode:c}=(0,i.G)();return(0,s.jsx)(s.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.A)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:o},e)}))})}function c(e){const{sources:t,className:n,alt:r,...a}=e;return(0,s.jsx)(u,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>y,u:()=>u});var r=n(6540),a=n(8193),o=n(205),i=n(3109),l=n(4848);const s="ease-in-out";function u(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return p(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function m(e){if(!a.A.canUseDOM)return e?c:d}function g(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:s,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return f({collapsibleRef:c,collapsed:n,animation:o}),(0,l.jsx)(t,{ref:c,style:u?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(c.current,n),i?.(n))},className:s,children:a})}function h(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[s,u]=(0,r.useState)(t);return(0,o.A)((()=>{t||i(!0)}),[t]),(0,o.A)((()=>{a&&u(t)}),[a,t]),a?(0,l.jsx)(g,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?h:g;return(0,l.jsx)(r,{...n})}},5041:(e,t,n)=>{"use strict";n.d(t,{M:()=>g,o:()=>m});var r=n(6540),a=n(2303),o=n(679),i=n(9532),l=n(6342),s=n(4848);const u=(0,o.Wf)("docusaurus.announcement.dismiss"),c=(0,o.Wf)("docusaurus.announcement.id"),d=()=>"true"===u.get(),p=e=>u.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&p(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(f.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>y,a:()=>h});var r=n(6540),a=n(8193),o=n(9532),i=n(679),l=n(6342),s=n(4848);const u=r.createContext(void 0),c="theme",d=(0,i.Wf)(c),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>a.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),g=e=>{d.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),[a,o]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&g(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[a,i])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},5597:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>y,g1:()=>v});var r=n(6540),a=n(4070),o=n(7065),i=n(6342),l=n(1754),s=n(9532),u=n(679),c=n(4848);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,u.Wf)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.Wf)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.Wf)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function g(){const e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=g();return(0,c.jsx)(m.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.C5?(0,c.jsx)(h,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function b(){const e=(0,r.useContext)(m);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.W);const t=(0,a.ht)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},6588:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>u});var r=n(6540),a=n(9532),o=n(4848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(l.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},2252:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},9876:(e,t,n)=>{"use strict";n.d(t,{e:()=>f,M:()=>m});var r=n(6540),a=n(5600),o=n(4581),i=n(6347),l=n(9532);function s(e){!function(e){const t=(0,i.W6)(),n=(0,l._q)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6342),c=n(4848);const d=r.createContext(void 0);function p(){const e=function(){const e=(0,a.YL)(),{items:t}=(0,u.p)().navbar;return 0===t.length&&!e.component}(),t=(0,o.l)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f(e){let{children:t}=e;const n=p();return(0,c.jsx)(d.Provider,{value:n,children:t})}function m(){const e=r.useContext(d);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},5600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>u,YL:()=>s,y_:()=>l});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.dV("NavbarSecondaryMenuContentProvider");const[,l]=o,s=(0,a.Be)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},4090:(e,t,n)=>{"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(6540);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(6540),a=n(8193);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},7559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},3109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},1754:(e,t,n)=>{"use strict";n.d(t,{Nr:()=>f,w8:()=>h,C5:()=>p,B5:()=>E,Vd:()=>k,QB:()=>S,fW:()=>x,OF:()=>w,Y:()=>b});var r=n(6540),a=n(6347),o=n(2831),i=n(4070),l=n(5597),s=n(2252),u=n(6588);function c(e){return Array.from(new Set(e))}var d=n(9169);const p=!!i.Gy;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const m=(e,t)=>void 0!==e&&(0,d.ys)(e,t),g=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||g(e.items,t))}function y(e,t){switch(e.type){case"category":return h(e,t)||e.items.some((e=>y(e,t)));case"link":return!e.unlisted||h(e,t);default:return!0}}function b(e,t){return(0,r.useMemo)((()=>e.filter((e=>y(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.ys)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.ys)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,u.t)(),{pathname:t}=(0,a.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,l.g1)(e),a=(0,i.r7)(e);return(0,r.useMemo)((()=>c([t,n,a].filter(Boolean))),[t,n,a])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${c(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,a.zy)(),r=(0,s.r)(),i=t.routes,l=i.find((e=>(0,a.B6)(n.pathname,e)));if(!l)return null;const u=l.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,o.v)(i),sidebarName:u,sidebarItems:c}}},1003:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>m});var r=n(6540),a=n(4164),o=n(5260),i=n(3102);function l(){const e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(6025),u=n(4586);var c=n(4848);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const l=function(e){const{siteConfig:t}=(0,u.A)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.hH)(),p=a?d(a,{absolute:!0}):void 0;return(0,c.jsxs)(o.A,{children:[t&&(0,c.jsx)("title",{children:l}),t&&(0,c.jsx)("meta",{property:"og:title",content:l}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),l=(0,a.A)(i,t);return(0,c.jsxs)(p.Provider,{value:l,children:[(0,c.jsx)(o.A,{children:(0,c.jsx)("html",{className:l})}),n]})}function m(e){let{children:t}=e;const n=l(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(f,{className:(0,a.A)(r,o),children:t})}},9532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>u,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>c});var r=n(6540),a=n(205),o=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,a.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,a.A)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),a=n(8328),o=n(4586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.A)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.A,baseUrl:e})),[e])}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>p,Tv:()=>u,gk:()=>f});var r=n(6540),a=n(8193),o=n(2303),i=(n(205),n(9532)),l=n(4848);const s=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(s.Provider,{value:n,children:t})}function c(){const e=(0,r.useContext)(s);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const d=()=>a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(d()),o=(0,i._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},2967:(e,t,n)=>{"use strict";n.d(t,{Cy:()=>r,tU:()=>a});n(4586);const r="default";function a(e,t){return`docs-${e}-${t}`}},679:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>u});n(6540);const r=JSON.parse('{"N":"localStorage","M":""}'),a=r.N;function o(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function i(e){if(void 0===e&&(e=a),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){const n=`${e}${r.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const a=i(t?.persistence);return null===a?s:{get:()=>{try{return a.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=a.getItem(n);a.setItem(n,e),o({key:n,oldValue:t,newValue:e,storage:a})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=a.getItem(n);a.removeItem(n),o({key:n,oldValue:e,newValue:null,storage:a})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===a&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(4586),a=n(6347),o=n(440);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.A)(),{pathname:s}=(0,a.zy)(),u=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),a=n(6347),o=n(9532);function i(e){const t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(4586);function a(){return(0,r.A)().siteConfig.themeConfig}},2983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=void 0;const r=n(2566);function a(e){return e.endsWith("/")?e:`${e}/`}function o(e){return(0,r.removeSuffix)(e,"/")}t.addTrailingSlash=a,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),l="/"===i||i===r?i:(s=i,n?a(s):o(s));var s;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o},253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},440:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(2983);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}}),Object.defineProperty(t,"addTrailingSlash",{enumerable:!0,get:function(){return a.addTrailingSlash}}),Object.defineProperty(t,"addLeadingSlash",{enumerable:!0,get:function(){return a.addLeadingSlash}}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return a.removeTrailingSlash}});var o=n(2566);Object.defineProperty(t,"addPrefix",{enumerable:!0,get:function(){return o.addPrefix}}),Object.defineProperty(t,"removeSuffix",{enumerable:!0,get:function(){return o.removeSuffix}}),Object.defineProperty(t,"addSuffix",{enumerable:!0,get:function(){return o.addSuffix}}),Object.defineProperty(t,"removePrefix",{enumerable:!0,get:function(){return o.removePrefix}});var i=n(253);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},2566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=void 0,t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){return""===t?e:e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},9231:(e,t,n)=>{"use strict";n.d(t,{zR:()=>S,TM:()=>j,yJ:()=>g,sC:()=>L,AO:()=>m,Fu:()=>h});var r=n(8168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};function l(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}const s=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=l(t),a=l(n);return r!==t||a!==n?e(r,a):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var u=n(1561);function c(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function p(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function f(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function m(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function g(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function h(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&s(e.state,t.state)}function y(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var b=!("undefined"==typeof window||!window.document||!window.document.createElement);function v(e,t){t(window.confirm(e))}var w="popstate",k="hashchange";function x(){try{return window.history.state||{}}catch(e){return{}}}function S(e){void 0===e&&(e={}),b||(0,u.A)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,l=i.forceRefresh,s=void 0!==l&&l,d=i.getUserConfirmation,h=void 0===d?v:d,S=i.keyLength,E=void 0===S?6:S,C=e.basename?f(c(e.basename)):"";function A(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return C&&(o=p(o,C)),g(o,r,n)}function _(){return Math.random().toString(36).substr(2,E)}var T=y();function j(e){(0,r.A)($,e),$.length=n.length,T.notifyListeners($.location,$.action)}function N(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||P(A(e.state))}function L(){P(A(x()))}var R=!1;function P(e){if(R)R=!1,j();else{T.confirmTransitionTo(e,"POP",h,(function(t){t?j({action:"POP",location:e}):function(e){var t=$.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(R=!0,M(a))}(e)}))}}var O=A(x()),D=[O.key];function I(e){return C+m(e)}function M(e){n.go(e)}var F=0;function z(e){1===(F+=e)&&1===e?(window.addEventListener(w,N),o&&window.addEventListener(k,L)):0===F&&(window.removeEventListener(w,N),o&&window.removeEventListener(k,L))}var B=!1;var $={length:n.length,action:"POP",location:O,createHref:I,push:function(e,t){var r="PUSH",o=g(e,t,_(),$.location);T.confirmTransitionTo(o,r,h,(function(e){if(e){var t=I(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),s)window.location.href=t;else{var u=D.indexOf($.location.key),c=D.slice(0,u+1);c.push(o.key),D=c,j({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=g(e,t,_(),$.location);T.confirmTransitionTo(o,r,h,(function(e){if(e){var t=I(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),s)window.location.replace(t);else{var u=D.indexOf($.location.key);-1!==u&&(D[u]=o.key),j({action:r,location:o})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return B||(z(1),B=!0),function(){return B&&(B=!1,z(-1)),t()}},listen:function(e){var t=T.appendListener(e);return z(1),function(){z(-1),t()}}};return $}var E="hashchange",C={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+d(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:d,decodePath:c},slash:{encodePath:c,decodePath:c}};function A(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function _(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function T(e){window.location.replace(A(window.location.href)+"#"+e)}function j(e){void 0===e&&(e={}),b||(0,u.A)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?v:a,i=n.hashType,l=void 0===i?"slash":i,s=e.basename?f(c(e.basename)):"",d=C[l],h=d.encodePath,w=d.decodePath;function k(){var e=w(_());return s&&(e=p(e,s)),g(e)}var x=y();function S(e){(0,r.A)(B,e),B.length=t.length,x.notifyListeners(B.location,B.action)}var j=!1,N=null;function L(){var e,t,n=_(),r=h(n);if(n!==r)T(r);else{var a=k(),i=B.location;if(!j&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(N===m(a))return;N=null,function(e){if(j)j=!1,S();else{var t="POP";x.confirmTransitionTo(e,t,o,(function(n){n?S({action:t,location:e}):function(e){var t=B.location,n=D.lastIndexOf(m(t));-1===n&&(n=0);var r=D.lastIndexOf(m(e));-1===r&&(r=0);var a=n-r;a&&(j=!0,I(a))}(e)}))}}(a)}}var R=_(),P=h(R);R!==P&&T(P);var O=k(),D=[m(O)];function I(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(E,L):0===M&&window.removeEventListener(E,L)}var z=!1;var B={length:t.length,action:"POP",location:O,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=A(window.location.href)),n+"#"+h(s+m(e))},push:function(e,t){var n="PUSH",r=g(e,void 0,void 0,B.location);x.confirmTransitionTo(r,n,o,(function(e){if(e){var t=m(r),a=h(s+t);if(_()!==a){N=t,function(e){window.location.hash=e}(a);var o=D.lastIndexOf(m(B.location)),i=D.slice(0,o+1);i.push(t),D=i,S({action:n,location:r})}else S()}}))},replace:function(e,t){var n="REPLACE",r=g(e,void 0,void 0,B.location);x.confirmTransitionTo(r,n,o,(function(e){if(e){var t=m(r),a=h(s+t);_()!==a&&(N=t,T(a));var o=D.indexOf(m(B.location));-1!==o&&(D[o]=t),S({action:n,location:r})}}))},go:I,goBack:function(){I(-1)},goForward:function(){I(1)},block:function(e){void 0===e&&(e=!1);var t=x.setPrompt(e);return z||(F(1),z=!0),function(){return z&&(z=!1,F(-1)),t()}},listen:function(e){var t=x.appendListener(e);return F(1),function(){F(-1),t()}}};return B}function N(e,t,n){return Math.min(Math.max(e,t),n)}function L(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=y();function d(e){(0,r.A)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function p(){return Math.random().toString(36).substr(2,u)}var f=N(l,0,o.length-1),h=o.map((function(e){return g(e,void 0,"string"==typeof e?p():e.key||p())})),b=m;function v(e){var t=N(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:h.length,action:"POP",location:h[f],index:f,entries:h,createHref:b,push:function(e,t){var r="PUSH",a=g(e,t,p(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=g(e,t,p(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},4146:(e,t,n)=>{"use strict";var r=n(4363),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),h=0;h<i.length;++h){var y=i[h];if(!(o[y]||r&&r[y]||g&&g[y]||l&&l[y])){var b=p(n,y);try{u(t,y,b)}catch(v){}}}}return t}},311:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},119:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},5302:(e,t,n)=>{var r=n(4634);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var m=e[i],g=n[2],h=n[3],y=n[4],b=n[5],v=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=g&&null!=m&&m!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||c,C=y||b;r.push({name:h||o++,prefix:g||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:C?u(C):w?".*":"[^"+s(E)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,p=l[c.name];if(null==p){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(p)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=s(p[f]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===f?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(p),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var p=s(u.prefix),f="(?:"+u.pattern+")";t.push(u),u.repeat&&(f+="(?:"+p+f+")*"),i+=f=u.optional?u.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var m=s(n.delimiter||"/"),g=i.slice(-m.length)===m;return a||(i=(g?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&g?"":"(?="+m+"|$)",c(new RegExp("^"+i,d(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(f(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(o(e,n),t,n)}(e,t,n)}},6969:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},8722:(e,t,n)=>{const r=n(6969),a=n(8380),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(3157).resolve(t)],delete Prism.languages[e],n(3157)(t),o.add(e)}))}i.silent=!1,e.exports=i},9700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),m=p.indexOf(f);if(m>-1){++a;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(m+f.length),b=[];g&&b.push.apply(b,i([g])),b.push(h),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},8692:(e,t,n)=>{var r={"./":8722};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=8692},3157:(e,t,n)=>{var r={"./":8722};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=3157},8380:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(s),m=c;a(m);){for(var g in p={},m){var h=s[g];t(h&&h.modify,(function(e){e in d&&(p[e]=!0)}))}for(var y in d)if(!(y in c))for(var b in f(y))if(b in c){p[y]=!0;break}for(var v in m=p)c[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var p=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,c,t,n)}};return w}}();e.exports=t},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,t,n)=>{"use strict";var r=n(6540),a=n(9982);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,l={};function s(e,t){u(e,t),u(e+"Capture",t)}function u(e,t){for(l[e]=t,e=0;e<t.length;e++)i.add(t[e])}var c=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),d=Object.prototype.hasOwnProperty,p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f={},m={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var h={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){h[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];h[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){h[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){h[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){h[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){h[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){h[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){h[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){h[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var y=/[\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function v(e,t,n,r){var a=h.hasOwnProperty(t)?h[t]:null;(null!==a?0!==a.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!d.call(m,e)||!d.call(f,e)&&(p.test(e)?m[e]=!0:(f[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(y,b);h[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(y,b);h[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(y,b);h[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){h[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),h.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){h[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=Symbol.for("react.element"),x=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),A=Symbol.for("react.provider"),_=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),j=Symbol.for("react.suspense"),N=Symbol.for("react.suspense_list"),L=Symbol.for("react.memo"),R=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var P=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var O=Symbol.iterator;function D(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=O&&e[O]||e["@@iterator"])?e:null}var I,M=Object.assign;function F(e){if(void 0===I)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);I=t&&t[1]||""}return"\n"+I+e}var z=!1;function B(e,t){if(!e||z)return"";z=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(u){var r=u}Reflect.construct(e,[],t)}else{try{t.call()}catch(u){r=u}e.call(t.prototype)}else{try{throw Error()}catch(u){r=u}e()}}catch(u){if(u&&r&&"string"==typeof u.stack){for(var a=u.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l]){var s="\n"+a[i].replace(" at new "," at ");return e.displayName&&s.includes("<anonymous>")&&(s=s.replace("<anonymous>",e.displayName)),s}}while(1<=i&&0<=l);break}}}finally{z=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?F(e):""}function $(e){switch(e.tag){case 5:return F(e.type);case 16:return F("Lazy");case 13:return F("Suspense");case 19:return F("SuspenseList");case 0:case 2:case 15:return e=B(e.type,!1);case 11:return e=B(e.type.render,!1);case 1:return e=B(e.type,!0);default:return""}}function U(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case S:return"Fragment";case x:return"Portal";case C:return"Profiler";case E:return"StrictMode";case j:return"Suspense";case N:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case _:return(e.displayName||"Context")+".Consumer";case A:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case L:return null!==(t=e.displayName||null)?t:U(e.type)||"Memo";case R:t=e._payload,e=e._init;try{return U(e(t))}catch(n){}}return null}function q(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return U(t);case 8:return t===E?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function H(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function G(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function V(e){e._valueTracker||(e._valueTracker=function(e){var t=G(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function W(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=G(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Q(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function K(e,t){var n=t.checked;return M({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Y(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=H(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Z(e,t){null!=(t=t.checked)&&v(e,"checked",t,!1)}function X(e,t){Z(e,t);var n=H(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,H(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&Q(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+H(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return M({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ae(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(te(n)){if(1<n.length)throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:H(n)}}function oe(e,t){var n=H(t.value),r=H(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ie(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function le(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function se(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?le(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ue,ce,de=(ce=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ue=ue||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=ue.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ce(e,t)}))}:ce);function pe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var fe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=["Webkit","ms","Moz","O"];function ge(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||fe.hasOwnProperty(e)&&fe[e]?(""+t).trim():t+"px"}function he(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=ge(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(fe).forEach((function(e){me.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),fe[t]=fe[e]}))}));var ye=M({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function be(e,t){if(t){if(ye[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(o(62))}}function ve(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var we=null;function ke(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var xe=null,Se=null,Ee=null;function Ce(e){if(e=va(e)){if("function"!=typeof xe)throw Error(o(280));var t=e.stateNode;t&&(t=ka(t),xe(e.stateNode,e.type,t))}}function Ae(e){Se?Ee?Ee.push(e):Ee=[e]:Se=e}function _e(){if(Se){var e=Se,t=Ee;if(Ee=Se=null,Ce(e),t)for(e=0;e<t.length;e++)Ce(t[e])}}function Te(e,t){return e(t)}function je(){}var Ne=!1;function Le(e,t,n){if(Ne)return e(t,n);Ne=!0;try{return Te(e,t,n)}finally{Ne=!1,(null!==Se||null!==Ee)&&(je(),_e())}}function Re(e,t){var n=e.stateNode;if(null===n)return null;var r=ka(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(o(231,t,typeof n));return n}var Pe=!1;if(c)try{var Oe={};Object.defineProperty(Oe,"passive",{get:function(){Pe=!0}}),window.addEventListener("test",Oe,Oe),window.removeEventListener("test",Oe,Oe)}catch(ce){Pe=!1}function De(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var Ie=!1,Me=null,Fe=!1,ze=null,Be={onError:function(e){Ie=!0,Me=e}};function $e(e,t,n,r,a,o,i,l,s){Ie=!1,Me=null,De.apply(Be,arguments)}function Ue(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{!!(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function qe(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function He(e){if(Ue(e)!==e)throw Error(o(188))}function Ge(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ue(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var i=a.alternate;if(null===i){if(null!==(r=a.return)){n=r;continue}break}if(a.child===i.child){for(i=a.child;i;){if(i===n)return He(a),e;if(i===r)return He(a),t;i=i.sibling}throw Error(o(188))}if(n.return!==r.return)n=a,r=i;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=i;break}if(s===r){l=!0,r=a,n=i;break}s=s.sibling}if(!l){for(s=i.child;s;){if(s===n){l=!0,n=i,r=a;break}if(s===r){l=!0,r=i,n=a;break}s=s.sibling}if(!l)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e))?Ve(e):null}function Ve(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ve(e);if(null!==t)return t;e=e.sibling}return null}var We=a.unstable_scheduleCallback,Qe=a.unstable_cancelCallback,Ke=a.unstable_shouldYield,Ye=a.unstable_requestPaint,Ze=a.unstable_now,Xe=a.unstable_getCurrentPriorityLevel,Je=a.unstable_ImmediatePriority,et=a.unstable_UserBlockingPriority,tt=a.unstable_NormalPriority,nt=a.unstable_LowPriority,rt=a.unstable_IdlePriority,at=null,ot=null;var it=Math.clz32?Math.clz32:function(e){return e>>>=0,0===e?32:31-(lt(e)/st|0)|0},lt=Math.log,st=Math.LN2;var ut=64,ct=4194304;function dt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function pt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,a=e.suspendedLanes,o=e.pingedLanes,i=268435455&n;if(0!==i){var l=i&~a;0!==l?r=dt(l):0!==(o&=i)&&(r=dt(o))}else 0!==(i=n&~a)?r=dt(i):0!==o&&(r=dt(o));if(0===r)return 0;if(0!==t&&t!==r&&!(t&a)&&((a=r&-r)>=(o=t&-t)||16===a&&4194240&o))return t;if(4&r&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-it(t)),r|=e[n],t&=~a;return r}function ft(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function mt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function gt(){var e=ut;return!(4194240&(ut<<=1))&&(ut=64),e}function ht(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function yt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function bt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),a=1<<r;a&t|e[r]&t&&(e[r]|=t),n&=~a}}var vt=0;function wt(e){return 1<(e&=-e)?4<e?268435455&e?16:536870912:4:1}var kt,xt,St,Et,Ct,At=!1,_t=[],Tt=null,jt=null,Nt=null,Lt=new Map,Rt=new Map,Pt=[],Ot="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Dt(e,t){switch(e){case"focusin":case"focusout":Tt=null;break;case"dragenter":case"dragleave":jt=null;break;case"mouseover":case"mouseout":Nt=null;break;case"pointerover":case"pointerout":Lt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Rt.delete(t.pointerId)}}function It(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:o,targetContainers:[a]},null!==t&&(null!==(t=va(t))&&xt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function Mt(e){var t=ba(e.target);if(null!==t){var n=Ue(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=qe(n)))return e.blockedOn=t,void Ct(e.priority,(function(){St(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Ft(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Kt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=va(n))&&xt(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function zt(e,t,n){Ft(e)&&n.delete(t)}function Bt(){At=!1,null!==Tt&&Ft(Tt)&&(Tt=null),null!==jt&&Ft(jt)&&(jt=null),null!==Nt&&Ft(Nt)&&(Nt=null),Lt.forEach(zt),Rt.forEach(zt)}function $t(e,t){e.blockedOn===t&&(e.blockedOn=null,At||(At=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,Bt)))}function Ut(e){function t(t){return $t(t,e)}if(0<_t.length){$t(_t[0],e);for(var n=1;n<_t.length;n++){var r=_t[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Tt&&$t(Tt,e),null!==jt&&$t(jt,e),null!==Nt&&$t(Nt,e),Lt.forEach(t),Rt.forEach(t),n=0;n<Pt.length;n++)(r=Pt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Pt.length&&null===(n=Pt[0]).blockedOn;)Mt(n),null===n.blockedOn&&Pt.shift()}var qt=w.ReactCurrentBatchConfig,Ht=!0;function Gt(e,t,n,r){var a=vt,o=qt.transition;qt.transition=null;try{vt=1,Wt(e,t,n,r)}finally{vt=a,qt.transition=o}}function Vt(e,t,n,r){var a=vt,o=qt.transition;qt.transition=null;try{vt=4,Wt(e,t,n,r)}finally{vt=a,qt.transition=o}}function Wt(e,t,n,r){if(Ht){var a=Kt(e,t,n,r);if(null===a)Hr(e,t,r,Qt,n),Dt(e,r);else if(function(e,t,n,r,a){switch(t){case"focusin":return Tt=It(Tt,e,t,n,r,a),!0;case"dragenter":return jt=It(jt,e,t,n,r,a),!0;case"mouseover":return Nt=It(Nt,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return Lt.set(o,It(Lt.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,Rt.set(o,It(Rt.get(o)||null,e,t,n,r,a)),!0}return!1}(a,e,t,n,r))r.stopPropagation();else if(Dt(e,r),4&t&&-1<Ot.indexOf(e)){for(;null!==a;){var o=va(a);if(null!==o&&kt(o),null===(o=Kt(e,t,n,r))&&Hr(e,t,r,Qt,n),o===a)break;a=o}null!==a&&r.stopPropagation()}else Hr(e,t,r,null,n)}}var Qt=null;function Kt(e,t,n,r){if(Qt=null,null!==(e=ba(e=ke(r))))if(null===(t=Ue(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=qe(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Qt=e,null}function Yt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Xe()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Zt=null,Xt=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=Xt,r=n.length,a="value"in Zt?Zt.value:Zt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return Jt=a.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function an(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return M(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var on,ln,sn,un={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cn=an(un),dn=M({},un,{view:0,detail:0}),pn=an(dn),fn=M({},dn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Cn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==sn&&(sn&&"mousemove"===e.type?(on=e.screenX-sn.screenX,ln=e.screenY-sn.screenY):ln=on=0,sn=e),on)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),mn=an(fn),gn=an(M({},fn,{dataTransfer:0})),hn=an(M({},dn,{relatedTarget:0})),yn=an(M({},un,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=M({},un,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),vn=an(bn),wn=an(M({},un,{data:0})),kn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function En(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function Cn(){return En}var An=M({},dn,{key:function(e){if(e.key){var t=kn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Cn,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),_n=an(An),Tn=an(M({},fn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),jn=an(M({},dn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Cn})),Nn=an(M({},un,{propertyName:0,elapsedTime:0,pseudoElement:0})),Ln=M({},fn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Rn=an(Ln),Pn=[9,13,27,32],On=c&&"CompositionEvent"in window,Dn=null;c&&"documentMode"in document&&(Dn=document.documentMode);var In=c&&"TextEvent"in window&&!Dn,Mn=c&&(!On||Dn&&8<Dn&&11>=Dn),Fn=String.fromCharCode(32),zn=!1;function Bn(e,t){switch(e){case"keyup":return-1!==Pn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Un=!1;var qn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!qn[e.type]:"textarea"===t}function Gn(e,t,n,r){Ae(r),0<(t=Vr(t,"onChange")).length&&(n=new cn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Vn=null,Wn=null;function Qn(e){Fr(e,0)}function Kn(e){if(W(wa(e)))return e}function Yn(e,t){if("change"===e)return t}var Zn=!1;if(c){var Xn;if(c){var Jn="oninput"in document;if(!Jn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Jn="function"==typeof er.oninput}Xn=Jn}else Xn=!1;Zn=Xn&&(!document.documentMode||9<document.documentMode)}function tr(){Vn&&(Vn.detachEvent("onpropertychange",nr),Wn=Vn=null)}function nr(e){if("value"===e.propertyName&&Kn(Wn)){var t=[];Gn(t,Wn,e,ke(e)),Le(Qn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Wn=n,(Vn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function ar(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Kn(Wn)}function or(e,t){if("click"===e)return Kn(t)}function ir(e,t){if("input"===e||"change"===e)return Kn(t)}var lr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function sr(e,t){if(lr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var a=n[r];if(!d.call(t,a)||!lr(e[a],t[a]))return!1}return!0}function ur(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function cr(e,t){var n,r=ur(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=ur(r)}}function dr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?dr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function pr(){for(var e=window,t=Q();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Q((e=t.contentWindow).document)}return t}function fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function mr(e){var t=pr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dr(n.ownerDocument.documentElement,n)){if(null!==r&&fr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var a=n.textContent.length,o=Math.min(r.start,a);r=void 0===r.end?o:Math.min(r.end,a),!e.extend&&o>r&&(a=r,r=o,o=a),a=cr(n,o);var i=cr(n,r);a&&i&&(1!==e.rangeCount||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(a.node,a.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var gr=c&&"documentMode"in document&&11>=document.documentMode,hr=null,yr=null,br=null,vr=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;vr||null==hr||hr!==Q(r)||("selectionStart"in(r=hr)&&fr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},br&&sr(br,r)||(br=r,0<(r=Vr(yr,"onSelect")).length&&(t=new cn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=hr)))}function kr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var xr={animationend:kr("Animation","AnimationEnd"),animationiteration:kr("Animation","AnimationIteration"),animationstart:kr("Animation","AnimationStart"),transitionend:kr("Transition","TransitionEnd")},Sr={},Er={};function Cr(e){if(Sr[e])return Sr[e];if(!xr[e])return e;var t,n=xr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Er)return Sr[e]=n[t];return e}c&&(Er=document.createElement("div").style,"AnimationEvent"in window||(delete xr.animationend.animation,delete xr.animationiteration.animation,delete xr.animationstart.animation),"TransitionEvent"in window||delete xr.transitionend.transition);var Ar=Cr("animationend"),_r=Cr("animationiteration"),Tr=Cr("animationstart"),jr=Cr("transitionend"),Nr=new Map,Lr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Rr(e,t){Nr.set(e,t),s(t,[e])}for(var Pr=0;Pr<Lr.length;Pr++){var Or=Lr[Pr];Rr(Or.toLowerCase(),"on"+(Or[0].toUpperCase()+Or.slice(1)))}Rr(Ar,"onAnimationEnd"),Rr(_r,"onAnimationIteration"),Rr(Tr,"onAnimationStart"),Rr("dblclick","onDoubleClick"),Rr("focusin","onFocus"),Rr("focusout","onBlur"),Rr(jr,"onTransitionEnd"),u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Dr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Ir=new Set("cancel close invalid load scroll toggle".split(" ").concat(Dr));function Mr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,i,l,s,u){if($e.apply(this,arguments),Ie){if(!Ie)throw Error(o(198));var c=Me;Ie=!1,Me=null,Fe||(Fe=!0,ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Fr(e,t){t=!!(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Mr(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Mr(a,l,u),o=s}}}if(Fe)throw e=ze,Fe=!1,ze=null,e}function zr(e,t){var n=t[ga];void 0===n&&(n=t[ga]=new Set);var r=e+"__bubble";n.has(r)||(qr(t,e,2,!1),n.add(r))}function Br(e,t,n){var r=0;t&&(r|=4),qr(n,e,r,t)}var $r="_reactListening"+Math.random().toString(36).slice(2);function Ur(e){if(!e[$r]){e[$r]=!0,i.forEach((function(t){"selectionchange"!==t&&(Ir.has(t)||Br(t,!1,e),Br(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[$r]||(t[$r]=!0,Br("selectionchange",!1,t))}}function qr(e,t,n,r){switch(Yt(t)){case 1:var a=Gt;break;case 4:a=Vt;break;default:a=Wt}n=a.bind(null,t,n,e),a=void 0,!Pe||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Hr(e,t,n,r,a){var o=r;if(!(1&t||2&t||null===r))e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ba(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}Le((function(){var r=o,a=ke(n),i=[];e:{var l=Nr.get(e);if(void 0!==l){var s=cn,u=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":s=_n;break;case"focusin":u="focus",s=hn;break;case"focusout":u="blur",s=hn;break;case"beforeblur":case"afterblur":s=hn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=mn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=gn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=jn;break;case Ar:case _r:case Tr:s=yn;break;case jr:s=Nn;break;case"scroll":s=pn;break;case"wheel":s=Rn;break;case"copy":case"cut":case"paste":s=vn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Tn}var c=!!(4&t),d=!c&&"scroll"===e,p=c?null!==l?l+"Capture":null:l;c=[];for(var f,m=r;null!==m;){var g=(f=m).stateNode;if(5===f.tag&&null!==g&&(f=g,null!==p&&(null!=(g=Re(m,p))&&c.push(Gr(m,g,f)))),d)break;m=m.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(!(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===we||!(u=n.relatedTarget||n.fromElement)||!ba(u)&&!u[ma])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ba(u):null)&&(u!==(d=Ue(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=mn,g="onMouseLeave",p="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=Tn,g="onPointerLeave",p="onPointerEnter",m="pointer"),d=null==s?l:wa(s),f=null==u?l:wa(u),(l=new c(g,m+"leave",s,n,a)).target=d,l.relatedTarget=f,g=null,ba(a)===r&&((c=new c(p,m+"enter",u,n,a)).target=f,c.relatedTarget=d,g=c),d=g,s&&u)e:{for(p=u,m=0,f=c=s;f;f=Wr(f))m++;for(f=0,g=p;g;g=Wr(g))f++;for(;0<m-f;)c=Wr(c),m--;for(;0<f-m;)p=Wr(p),f--;for(;m--;){if(c===p||null!==p&&c===p.alternate)break e;c=Wr(c),p=Wr(p)}c=null}else c=null;null!==s&&Qr(i,l,s,c,!1),null!==u&&null!==d&&Qr(i,d,u,c,!0)}if("select"===(s=(l=r?wa(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var h=Yn;else if(Hn(l))if(Zn)h=ir;else{h=ar;var y=rr}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(h=or);switch(h&&(h=h(e,r))?Gn(i,h,n,a):(y&&y(e,l,r),"focusout"===e&&(y=l._wrapperState)&&y.controlled&&"number"===l.type&&ee(l,"number",l.value)),y=r?wa(r):window,e){case"focusin":(Hn(y)||"true"===y.contentEditable)&&(hr=y,yr=r,br=null);break;case"focusout":br=yr=hr=null;break;case"mousedown":vr=!0;break;case"contextmenu":case"mouseup":case"dragend":vr=!1,wr(i,n,a);break;case"selectionchange":if(gr)break;case"keydown":case"keyup":wr(i,n,a)}var b;if(On)e:{switch(e){case"compositionstart":var v="onCompositionStart";break e;case"compositionend":v="onCompositionEnd";break e;case"compositionupdate":v="onCompositionUpdate";break e}v=void 0}else Un?Bn(e,n)&&(v="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(v="onCompositionStart");v&&(Mn&&"ko"!==n.locale&&(Un||"onCompositionStart"!==v?"onCompositionEnd"===v&&Un&&(b=en()):(Xt="value"in(Zt=a)?Zt.value:Zt.textContent,Un=!0)),0<(y=Vr(r,v)).length&&(v=new wn(v,e,null,n,a),i.push({event:v,listeners:y}),b?v.data=b:null!==(b=$n(n))&&(v.data=b))),(b=In?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(zn=!0,Fn);case"textInput":return(e=t.data)===Fn&&zn?null:e;default:return null}}(e,n):function(e,t){if(Un)return"compositionend"===e||!On&&Bn(e,t)?(e=en(),Jt=Xt=Zt=null,Un=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Mn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Vr(r,"onBeforeInput")).length&&(a=new wn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Fr(i,t)}))}function Gr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Vr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Re(e,n))&&r.unshift(Gr(e,o,a)),null!=(o=Re(e,t))&&r.push(Gr(e,o,a))),e=e.return}return r}function Wr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Qr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=Re(n,o))&&i.unshift(Gr(n,s,l)):a||null!=(s=Re(n,o))&&i.push(Gr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var Kr=/\r\n?/g,Yr=/\u0000|\uFFFD/g;function Zr(e){return("string"==typeof e?e:""+e).replace(Kr,"\n").replace(Yr,"")}function Xr(e,t,n){if(t=Zr(t),Zr(e)!==t&&n)throw Error(o(425))}function Jr(){}var ea=null,ta=null;function na(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ra="function"==typeof setTimeout?setTimeout:void 0,aa="function"==typeof clearTimeout?clearTimeout:void 0,oa="function"==typeof Promise?Promise:void 0,ia="function"==typeof queueMicrotask?queueMicrotask:void 0!==oa?function(e){return oa.resolve(null).then(e).catch(la)}:ra;function la(e){setTimeout((function(){throw e}))}function sa(e,t){var n=t,r=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&8===a.nodeType)if("/$"===(n=a.data)){if(0===r)return e.removeChild(a),void Ut(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=a}while(n);Ut(t)}function ua(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function ca(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var da=Math.random().toString(36).slice(2),pa="__reactFiber$"+da,fa="__reactProps$"+da,ma="__reactContainer$"+da,ga="__reactEvents$"+da,ha="__reactListeners$"+da,ya="__reactHandles$"+da;function ba(e){var t=e[pa];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ma]||n[pa]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=ca(e);null!==e;){if(n=e[pa])return n;e=ca(e)}return t}n=(e=n).parentNode}return null}function va(e){return!(e=e[pa]||e[ma])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function wa(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function ka(e){return e[fa]||null}var xa=[],Sa=-1;function Ea(e){return{current:e}}function Ca(e){0>Sa||(e.current=xa[Sa],xa[Sa]=null,Sa--)}function Aa(e,t){Sa++,xa[Sa]=e.current,e.current=t}var _a={},Ta=Ea(_a),ja=Ea(!1),Na=_a;function La(e,t){var n=e.type.contextTypes;if(!n)return _a;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Ra(e){return null!=(e=e.childContextTypes)}function Pa(){Ca(ja),Ca(Ta)}function Oa(e,t,n){if(Ta.current!==_a)throw Error(o(168));Aa(Ta,t),Aa(ja,n)}function Da(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in t))throw Error(o(108,q(e)||"Unknown",a));return M({},n,r)}function Ia(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||_a,Na=Ta.current,Aa(Ta,e),Aa(ja,ja.current),!0}function Ma(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=Da(e,t,Na),r.__reactInternalMemoizedMergedChildContext=e,Ca(ja),Ca(Ta),Aa(Ta,e)):Ca(ja),Aa(ja,n)}var Fa=null,za=!1,Ba=!1;function $a(e){null===Fa?Fa=[e]:Fa.push(e)}function Ua(){if(!Ba&&null!==Fa){Ba=!0;var e=0,t=vt;try{var n=Fa;for(vt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Fa=null,za=!1}catch(a){throw null!==Fa&&(Fa=Fa.slice(e+1)),We(Je,Ua),a}finally{vt=t,Ba=!1}}return null}var qa=[],Ha=0,Ga=null,Va=0,Wa=[],Qa=0,Ka=null,Ya=1,Za="";function Xa(e,t){qa[Ha++]=Va,qa[Ha++]=Ga,Ga=e,Va=t}function Ja(e,t,n){Wa[Qa++]=Ya,Wa[Qa++]=Za,Wa[Qa++]=Ka,Ka=e;var r=Ya;e=Za;var a=32-it(r)-1;r&=~(1<<a),n+=1;var o=32-it(t)+a;if(30<o){var i=a-a%5;o=(r&(1<<i)-1).toString(32),r>>=i,a-=i,Ya=1<<32-it(t)+a|n<<a|r,Za=o+e}else Ya=1<<o|n<<a|r,Za=e}function eo(e){null!==e.return&&(Xa(e,1),Ja(e,1,0))}function to(e){for(;e===Ga;)Ga=qa[--Ha],qa[Ha]=null,Va=qa[--Ha],qa[Ha]=null;for(;e===Ka;)Ka=Wa[--Qa],Wa[Qa]=null,Za=Wa[--Qa],Wa[Qa]=null,Ya=Wa[--Qa],Wa[Qa]=null}var no=null,ro=null,ao=!1,oo=null;function io(e,t){var n=Lu(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function lo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,no=e,ro=ua(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,no=e,ro=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Ka?{id:Ya,overflow:Za}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Lu(18,null,null,0)).stateNode=t,n.return=e,e.child=n,no=e,ro=null,!0);default:return!1}}function so(e){return!(!(1&e.mode)||128&e.flags)}function uo(e){if(ao){var t=ro;if(t){var n=t;if(!lo(e,t)){if(so(e))throw Error(o(418));t=ua(n.nextSibling);var r=no;t&&lo(e,t)?io(r,n):(e.flags=-4097&e.flags|2,ao=!1,no=e)}}else{if(so(e))throw Error(o(418));e.flags=-4097&e.flags|2,ao=!1,no=e}}}function co(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;no=e}function po(e){if(e!==no)return!1;if(!ao)return co(e),ao=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!na(e.type,e.memoizedProps)),t&&(t=ro)){if(so(e))throw fo(),Error(o(418));for(;t;)io(e,t),t=ua(t.nextSibling)}if(co(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){ro=ua(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}ro=null}}else ro=no?ua(e.stateNode.nextSibling):null;return!0}function fo(){for(var e=ro;e;)e=ua(e.nextSibling)}function mo(){ro=no=null,ao=!1}function go(e){null===oo?oo=[e]:oo.push(e)}var ho=w.ReactCurrentBatchConfig;function yo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var a=r,i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=a.refs;null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function bo(e,t){throw e=Object.prototype.toString.call(t),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function vo(e){return(0,e._init)(e._payload)}function wo(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Pu(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Mu(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){var o=n.type;return o===S?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===o||"object"==typeof o&&null!==o&&o.$$typeof===R&&vo(o)===t.type)?((r=a(t,n.props)).ref=yo(e,t,n),r.return=e,r):((r=Ou(n.type,n.key,n.props,null,e.mode,r)).ref=yo(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Fu(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Du(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Mu(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Ou(t.type,t.key,t.props,null,e.mode,n)).ref=yo(e,null,t),n.return=e,n;case x:return(t=Fu(t,e.mode,n)).return=e,t;case R:return p(e,(0,t._init)(t._payload),n)}if(te(t)||D(t))return(t=Du(t,e.mode,n,null)).return=e,t;bo(e,t)}return null}function f(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case k:return n.key===a?u(e,t,n,r):null;case x:return n.key===a?c(e,t,n,r):null;case R:return f(e,t,(a=n._init)(n._payload),r)}if(te(n)||D(n))return null!==a?null:d(e,t,n,r,null);bo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r&&""!==r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case k:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a);case x:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a);case R:return m(e,t,n,(0,r._init)(r._payload),a)}if(te(r)||D(r))return d(t,e=e.get(n)||null,r,a,null);bo(t,r)}return null}function g(a,o,l,s){for(var u=null,c=null,d=o,g=o=0,h=null;null!==d&&g<l.length;g++){d.index>g?(h=d,d=null):h=d.sibling;var y=f(a,d,l[g],s);if(null===y){null===d&&(d=h);break}e&&d&&null===y.alternate&&t(a,d),o=i(y,o,g),null===c?u=y:c.sibling=y,c=y,d=h}if(g===l.length)return n(a,d),ao&&Xa(a,g),u;if(null===d){for(;g<l.length;g++)null!==(d=p(a,l[g],s))&&(o=i(d,o,g),null===c?u=d:c.sibling=d,c=d);return ao&&Xa(a,g),u}for(d=r(a,d);g<l.length;g++)null!==(h=m(d,a,g,l[g],s))&&(e&&null!==h.alternate&&d.delete(null===h.key?g:h.key),o=i(h,o,g),null===c?u=h:c.sibling=h,c=h);return e&&d.forEach((function(e){return t(a,e)})),ao&&Xa(a,g),u}function h(a,l,s,u){var c=D(s);if("function"!=typeof c)throw Error(o(150));if(null==(s=c.call(s)))throw Error(o(151));for(var d=c=null,g=l,h=l=0,y=null,b=s.next();null!==g&&!b.done;h++,b=s.next()){g.index>h?(y=g,g=null):y=g.sibling;var v=f(a,g,b.value,u);if(null===v){null===g&&(g=y);break}e&&g&&null===v.alternate&&t(a,g),l=i(v,l,h),null===d?c=v:d.sibling=v,d=v,g=y}if(b.done)return n(a,g),ao&&Xa(a,h),c;if(null===g){for(;!b.done;h++,b=s.next())null!==(b=p(a,b.value,u))&&(l=i(b,l,h),null===d?c=b:d.sibling=b,d=b);return ao&&Xa(a,h),c}for(g=r(a,g);!b.done;h++,b=s.next())null!==(b=m(g,a,h,b.value,u))&&(e&&null!==b.alternate&&g.delete(null===b.key?h:b.key),l=i(b,l,h),null===d?c=b:d.sibling=b,d=b);return e&&g.forEach((function(e){return t(a,e)})),ao&&Xa(a,h),c}return function e(r,o,i,s){if("object"==typeof i&&null!==i&&i.type===S&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case k:e:{for(var u=i.key,c=o;null!==c;){if(c.key===u){if((u=i.type)===S){if(7===c.tag){n(r,c.sibling),(o=a(c,i.props.children)).return=r,r=o;break e}}else if(c.elementType===u||"object"==typeof u&&null!==u&&u.$$typeof===R&&vo(u)===c.type){n(r,c.sibling),(o=a(c,i.props)).ref=yo(r,c,i),o.return=r,r=o;break e}n(r,c);break}t(r,c),c=c.sibling}i.type===S?((o=Du(i.props.children,r.mode,s,i.key)).return=r,r=o):((s=Ou(i.type,i.key,i.props,null,r.mode,s)).ref=yo(r,o,i),s.return=r,r=s)}return l(r);case x:e:{for(c=i.key;null!==o;){if(o.key===c){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){n(r,o.sibling),(o=a(o,i.children||[])).return=r,r=o;break e}n(r,o);break}t(r,o),o=o.sibling}(o=Fu(i,r.mode,s)).return=r,r=o}return l(r);case R:return e(r,o,(c=i._init)(i._payload),s)}if(te(i))return g(r,o,i,s);if(D(i))return h(r,o,i,s);bo(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==o&&6===o.tag?(n(r,o.sibling),(o=a(o,i)).return=r,r=o):(n(r,o),(o=Mu(i,r.mode,s)).return=r,r=o),l(r)):n(r,o)}}var ko=wo(!0),xo=wo(!1),So=Ea(null),Eo=null,Co=null,Ao=null;function _o(){Ao=Co=Eo=null}function To(e){var t=So.current;Ca(So),e._currentValue=t}function jo(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function No(e,t){Eo=e,Ao=Co=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(!!(e.lanes&t)&&(vl=!0),e.firstContext=null)}function Lo(e){var t=e._currentValue;if(Ao!==e)if(e={context:e,memoizedValue:t,next:null},null===Co){if(null===Eo)throw Error(o(308));Co=e,Eo.dependencies={lanes:0,firstContext:e}}else Co=Co.next=e;return t}var Ro=null;function Po(e){null===Ro?Ro=[e]:Ro.push(e)}function Oo(e,t,n,r){var a=t.interleaved;return null===a?(n.next=n,Po(t)):(n.next=a.next,a.next=n),t.interleaved=n,Do(e,r)}function Do(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Io=!1;function Mo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Fo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function zo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Bo(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&Ts){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,Do(e,n)}return null===(a=r.interleaved)?(t.next=t,Po(r)):(t.next=a.next,a.next=t),r.interleaved=t,Do(e,n)}function $o(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}function Uo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function qo(e,t,n,r){var a=e.updateQueue;Io=!1;var o=a.firstBaseUpdate,i=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var s=l,u=s.next;s.next=null,null===i?o=u:i.next=u,i=s;var c=e.alternate;null!==c&&((l=(c=c.updateQueue).lastBaseUpdate)!==i&&(null===l?c.firstBaseUpdate=u:l.next=u,c.lastBaseUpdate=s))}if(null!==o){var d=a.baseState;for(i=0,c=u=s=null,l=o;;){var p=l.lane,f=l.eventTime;if((r&p)===p){null!==c&&(c=c.next={eventTime:f,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var m=e,g=l;switch(p=t,f=n,g.tag){case 1:if("function"==typeof(m=g.payload)){d=m.call(f,d,p);break e}d=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(p="function"==typeof(m=g.payload)?m.call(f,d,p):m))break e;d=M({},d,p);break e;case 2:Io=!0}}null!==l.callback&&0!==l.lane&&(e.flags|=64,null===(p=a.effects)?a.effects=[l]:p.push(l))}else f={eventTime:f,lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===c?(u=c=f,s=d):c=c.next=f,i|=p;if(null===(l=l.next)){if(null===(l=a.shared.pending))break;l=(p=l).next,p.next=null,a.lastBaseUpdate=p,a.shared.pending=null}}if(null===c&&(s=d),a.baseState=s,a.firstBaseUpdate=u,a.lastBaseUpdate=c,null!==(t=a.shared.interleaved)){a=t;do{i|=a.lane,a=a.next}while(a!==t)}else null===o&&(a.shared.lanes=0);Is|=i,e.lanes=i,e.memoizedState=d}}function Ho(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(o(191,a));a.call(r)}}}var Go={},Vo=Ea(Go),Wo=Ea(Go),Qo=Ea(Go);function Ko(e){if(e===Go)throw Error(o(174));return e}function Yo(e,t){switch(Aa(Qo,t),Aa(Wo,e),Aa(Vo,Go),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:se(null,"");break;default:t=se(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Ca(Vo),Aa(Vo,t)}function Zo(){Ca(Vo),Ca(Wo),Ca(Qo)}function Xo(e){Ko(Qo.current);var t=Ko(Vo.current),n=se(t,e.type);t!==n&&(Aa(Wo,e),Aa(Vo,n))}function Jo(e){Wo.current===e&&(Ca(Vo),Ca(Wo))}var ei=Ea(0);function ti(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(128&t.flags)return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ni=[];function ri(){for(var e=0;e<ni.length;e++)ni[e]._workInProgressVersionPrimary=null;ni.length=0}var ai=w.ReactCurrentDispatcher,oi=w.ReactCurrentBatchConfig,ii=0,li=null,si=null,ui=null,ci=!1,di=!1,pi=0,fi=0;function mi(){throw Error(o(321))}function gi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function hi(e,t,n,r,a,i){if(ii=i,li=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,ai.current=null===e||null===e.memoizedState?Ji:el,e=n(r,a),di){i=0;do{if(di=!1,pi=0,25<=i)throw Error(o(301));i+=1,ui=si=null,t.updateQueue=null,ai.current=tl,e=n(r,a)}while(di)}if(ai.current=Xi,t=null!==si&&null!==si.next,ii=0,ui=si=li=null,ci=!1,t)throw Error(o(300));return e}function yi(){var e=0!==pi;return pi=0,e}function bi(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ui?li.memoizedState=ui=e:ui=ui.next=e,ui}function vi(){if(null===si){var e=li.alternate;e=null!==e?e.memoizedState:null}else e=si.next;var t=null===ui?li.memoizedState:ui.next;if(null!==t)ui=t,si=e;else{if(null===e)throw Error(o(310));e={memoizedState:(si=e).memoizedState,baseState:si.baseState,baseQueue:si.baseQueue,queue:si.queue,next:null},null===ui?li.memoizedState=ui=e:ui=ui.next=e}return ui}function wi(e,t){return"function"==typeof t?t(e):t}function ki(e){var t=vi(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=si,a=r.baseQueue,i=n.pending;if(null!==i){if(null!==a){var l=a.next;a.next=i.next,i.next=l}r.baseQueue=a=i,n.pending=null}if(null!==a){i=a.next,r=r.baseState;var s=l=null,u=null,c=i;do{var d=c.lane;if((ii&d)===d)null!==u&&(u=u.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var p={lane:d,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};null===u?(s=u=p,l=r):u=u.next=p,li.lanes|=d,Is|=d}c=c.next}while(null!==c&&c!==i);null===u?l=r:u.next=s,lr(r,t.memoizedState)||(vl=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=u,n.lastRenderedState=r}if(null!==(e=n.interleaved)){a=e;do{i=a.lane,li.lanes|=i,Is|=i,a=a.next}while(a!==e)}else null===a&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function xi(e){var t=vi(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,i=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{i=e(i,l.action),l=l.next}while(l!==a);lr(i,t.memoizedState)||(vl=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function Si(){}function Ei(e,t){var n=li,r=vi(),a=t(),i=!lr(r.memoizedState,a);if(i&&(r.memoizedState=a,vl=!0),r=r.queue,Ii(_i.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==ui&&1&ui.memoizedState.tag){if(n.flags|=2048,Li(9,Ai.bind(null,n,r,a,t),void 0,null),null===js)throw Error(o(349));30&ii||Ci(n,t,a)}return a}function Ci(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=li.updateQueue)?(t={lastEffect:null,stores:null},li.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Ai(e,t,n,r){t.value=n,t.getSnapshot=r,Ti(t)&&ji(e)}function _i(e,t,n){return n((function(){Ti(t)&&ji(e)}))}function Ti(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lr(e,n)}catch(r){return!0}}function ji(e){var t=Do(e,1);null!==t&&nu(t,e,1,-1)}function Ni(e){var t=bi();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:wi,lastRenderedState:e},t.queue=e,e=e.dispatch=Qi.bind(null,li,e),[t.memoizedState,e]}function Li(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=li.updateQueue)?(t={lastEffect:null,stores:null},li.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Ri(){return vi().memoizedState}function Pi(e,t,n,r){var a=bi();li.flags|=e,a.memoizedState=Li(1|t,n,void 0,void 0===r?null:r)}function Oi(e,t,n,r){var a=vi();r=void 0===r?null:r;var o=void 0;if(null!==si){var i=si.memoizedState;if(o=i.destroy,null!==r&&gi(r,i.deps))return void(a.memoizedState=Li(t,n,o,r))}li.flags|=e,a.memoizedState=Li(1|t,n,o,r)}function Di(e,t){return Pi(8390656,8,e,t)}function Ii(e,t){return Oi(2048,8,e,t)}function Mi(e,t){return Oi(4,2,e,t)}function Fi(e,t){return Oi(4,4,e,t)}function zi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Bi(e,t,n){return n=null!=n?n.concat([e]):null,Oi(4,4,zi.bind(null,t,e),n)}function $i(){}function Ui(e,t){var n=vi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&gi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function qi(e,t){var n=vi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&gi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Hi(e,t,n){return 21&ii?(lr(n,t)||(n=gt(),li.lanes|=n,Is|=n,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,vl=!0),e.memoizedState=n)}function Gi(e,t){var n=vt;vt=0!==n&&4>n?n:4,e(!0);var r=oi.transition;oi.transition={};try{e(!1),t()}finally{vt=n,oi.transition=r}}function Vi(){return vi().memoizedState}function Wi(e,t,n){var r=tu(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ki(e))Yi(t,n);else if(null!==(n=Oo(e,t,n,r))){nu(n,e,r,eu()),Zi(n,t,r)}}function Qi(e,t,n){var r=tu(e),a={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ki(e))Yi(t,a);else{var o=e.alternate;if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=o(i,n);if(a.hasEagerState=!0,a.eagerState=l,lr(l,i)){var s=t.interleaved;return null===s?(a.next=a,Po(t)):(a.next=s.next,s.next=a),void(t.interleaved=a)}}catch(u){}null!==(n=Oo(e,t,a,r))&&(nu(n,e,r,a=eu()),Zi(n,t,r))}}function Ki(e){var t=e.alternate;return e===li||null!==t&&t===li}function Yi(e,t){di=ci=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Zi(e,t,n){if(4194240&n){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}var Xi={readContext:Lo,useCallback:mi,useContext:mi,useEffect:mi,useImperativeHandle:mi,useInsertionEffect:mi,useLayoutEffect:mi,useMemo:mi,useReducer:mi,useRef:mi,useState:mi,useDebugValue:mi,useDeferredValue:mi,useTransition:mi,useMutableSource:mi,useSyncExternalStore:mi,useId:mi,unstable_isNewReconciler:!1},Ji={readContext:Lo,useCallback:function(e,t){return bi().memoizedState=[e,void 0===t?null:t],e},useContext:Lo,useEffect:Di,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Pi(4194308,4,zi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Pi(4194308,4,e,t)},useInsertionEffect:function(e,t){return Pi(4,2,e,t)},useMemo:function(e,t){var n=bi();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=bi();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Wi.bind(null,li,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},bi().memoizedState=e},useState:Ni,useDebugValue:$i,useDeferredValue:function(e){return bi().memoizedState=e},useTransition:function(){var e=Ni(!1),t=e[0];return e=Gi.bind(null,e[1]),bi().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=li,a=bi();if(ao){if(void 0===n)throw Error(o(407));n=n()}else{if(n=t(),null===js)throw Error(o(349));30&ii||Ci(r,t,n)}a.memoizedState=n;var i={value:n,getSnapshot:t};return a.queue=i,Di(_i.bind(null,r,i,e),[e]),r.flags|=2048,Li(9,Ai.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=bi(),t=js.identifierPrefix;if(ao){var n=Za;t=":"+t+"R"+(n=(Ya&~(1<<32-it(Ya)-1)).toString(32)+n),0<(n=pi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=fi++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},el={readContext:Lo,useCallback:Ui,useContext:Lo,useEffect:Ii,useImperativeHandle:Bi,useInsertionEffect:Mi,useLayoutEffect:Fi,useMemo:qi,useReducer:ki,useRef:Ri,useState:function(){return ki(wi)},useDebugValue:$i,useDeferredValue:function(e){return Hi(vi(),si.memoizedState,e)},useTransition:function(){return[ki(wi)[0],vi().memoizedState]},useMutableSource:Si,useSyncExternalStore:Ei,useId:Vi,unstable_isNewReconciler:!1},tl={readContext:Lo,useCallback:Ui,useContext:Lo,useEffect:Ii,useImperativeHandle:Bi,useInsertionEffect:Mi,useLayoutEffect:Fi,useMemo:qi,useReducer:xi,useRef:Ri,useState:function(){return xi(wi)},useDebugValue:$i,useDeferredValue:function(e){var t=vi();return null===si?t.memoizedState=e:Hi(t,si.memoizedState,e)},useTransition:function(){return[xi(wi)[0],vi().memoizedState]},useMutableSource:Si,useSyncExternalStore:Ei,useId:Vi,unstable_isNewReconciler:!1};function nl(e,t){if(e&&e.defaultProps){for(var n in t=M({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}function rl(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:M({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var al={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=eu(),a=tu(e),o=zo(r,a);o.payload=t,null!=n&&(o.callback=n),null!==(t=Bo(e,o,a))&&(nu(t,e,a,r),$o(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=eu(),a=tu(e),o=zo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),null!==(t=Bo(e,o,a))&&(nu(t,e,a,r),$o(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=eu(),r=tu(e),a=zo(n,r);a.tag=2,null!=t&&(a.callback=t),null!==(t=Bo(e,a,r))&&(nu(t,e,r,n),$o(t,e,r))}};function ol(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!sr(n,r)||!sr(a,o))}function il(e,t,n){var r=!1,a=_a,o=t.contextType;return"object"==typeof o&&null!==o?o=Lo(o):(a=Ra(t)?Na:Ta.current,o=(r=null!=(r=t.contextTypes))?La(e,a):_a),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=al,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function ll(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&al.enqueueReplaceState(t,t.state,null)}function sl(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs={},Mo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=Lo(o):(o=Ra(t)?Na:Ta.current,a.context=La(e,o)),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(rl(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&al.enqueueReplaceState(a,a.state,null),qo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4194308)}function ul(e,t){try{var n="",r=t;do{n+=$(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a,digest:null}}function cl(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function dl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var pl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=zo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hs||(Hs=!0,Gs=r),dl(0,t)},n}function ml(e,t,n){(n=zo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return r(a)},n.callback=function(){dl(0,t)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){dl(0,t),"function"!=typeof r&&(null===Vs?Vs=new Set([this]):Vs.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function gl(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new pl;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(a.add(n),e=Cu.bind(null,e,t,n),t.then(e,e))}function hl(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function yl(e,t,n,r,a){return 1&e.mode?(e.flags|=65536,e.lanes=a,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=zo(-1,1)).tag=2,Bo(n,t,1))),n.lanes|=1),e)}var bl=w.ReactCurrentOwner,vl=!1;function wl(e,t,n,r){t.child=null===e?xo(t,null,n,r):ko(t,e.child,n,r)}function kl(e,t,n,r,a){n=n.render;var o=t.ref;return No(t,a),r=hi(e,t,n,r,o,a),n=yi(),null===e||vl?(ao&&n&&eo(t),t.flags|=1,wl(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Hl(e,t,a))}function xl(e,t,n,r,a){if(null===e){var o=n.type;return"function"!=typeof o||Ru(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Ou(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Sl(e,t,o,r,a))}if(o=e.child,!(e.lanes&a)){var i=o.memoizedProps;if((n=null!==(n=n.compare)?n:sr)(i,r)&&e.ref===t.ref)return Hl(e,t,a)}return t.flags|=1,(e=Pu(o,r)).ref=t.ref,e.return=t,t.child=e}function Sl(e,t,n,r,a){if(null!==e){var o=e.memoizedProps;if(sr(o,r)&&e.ref===t.ref){if(vl=!1,t.pendingProps=r=o,!(e.lanes&a))return t.lanes=e.lanes,Hl(e,t,a);131072&e.flags&&(vl=!0)}}return Al(e,t,n,r,a)}function El(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(1&t.mode){if(!(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Aa(Ps,Rs),Rs|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==o?o.baseLanes:n,Aa(Ps,Rs),Rs|=r}else t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Aa(Ps,Rs),Rs|=n;else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Aa(Ps,Rs),Rs|=r;return wl(e,t,a,n),t.child}function Cl(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Al(e,t,n,r,a){var o=Ra(n)?Na:Ta.current;return o=La(t,o),No(t,a),n=hi(e,t,n,r,o,a),r=yi(),null===e||vl?(ao&&r&&eo(t),t.flags|=1,wl(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Hl(e,t,a))}function _l(e,t,n,r,a){if(Ra(n)){var o=!0;Ia(t)}else o=!1;if(No(t,a),null===t.stateNode)ql(e,t),il(t,n,r),sl(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=Lo(u):u=La(t,u=Ra(n)?Na:Ta.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&ll(t,i,r,u),Io=!1;var p=t.memoizedState;i.state=p,qo(t,r,i,a),s=t.memoizedState,l!==r||p!==s||ja.current||Io?("function"==typeof c&&(rl(t,n,c,r),s=t.memoizedState),(l=Io||ol(t,n,l,r,p,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Fo(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:nl(t.type,l),i.props=u,d=t.pendingProps,p=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=Lo(s):s=La(t,s=Ra(n)?Na:Ta.current);var f=n.getDerivedStateFromProps;(c="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||p!==s)&&ll(t,i,r,s),Io=!1,p=t.memoizedState,i.state=p,qo(t,r,i,a);var m=t.memoizedState;l!==d||p!==m||ja.current||Io?("function"==typeof f&&(rl(t,n,f,r),m=t.memoizedState),(u=Io||ol(t,n,u,r,p,m,s)||!1)?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return Tl(e,t,n,r,o,a)}function Tl(e,t,n,r,a,o){Cl(e,t);var i=!!(128&t.flags);if(!r&&!i)return a&&Ma(t,n,!1),Hl(e,t,o);r=t.stateNode,bl.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=ko(t,e.child,null,o),t.child=ko(t,null,l,o)):wl(e,t,l,o),t.memoizedState=r.state,a&&Ma(t,n,!0),t.child}function jl(e){var t=e.stateNode;t.pendingContext?Oa(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Oa(0,t.context,!1),Yo(e,t.containerInfo)}function Nl(e,t,n,r,a){return mo(),go(a),t.flags|=256,wl(e,t,n,r),t.child}var Ll,Rl,Pl,Ol,Dl={dehydrated:null,treeContext:null,retryLane:0};function Il(e){return{baseLanes:e,cachePool:null,transitions:null}}function Ml(e,t,n){var r,a=t.pendingProps,i=ei.current,l=!1,s=!!(128&t.flags);if((r=s)||(r=(null===e||null!==e.memoizedState)&&!!(2&i)),r?(l=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),Aa(ei,1&i),null===e)return uo(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(1&t.mode?"$!"===e.data?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(s=a.children,e=a.fallback,l?(a=t.mode,l=t.child,s={mode:"hidden",children:s},1&a||null===l?l=Iu(s,a,0,null):(l.childLanes=0,l.pendingProps=s),e=Du(e,a,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Il(n),t.memoizedState=Dl,e):Fl(t,s));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,a,i,l){if(n)return 256&t.flags?(t.flags&=-257,zl(e,t,l,r=cl(Error(o(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,a=t.mode,r=Iu({mode:"visible",children:r.children},a,0,null),(i=Du(i,a,l,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,1&t.mode&&ko(t,e.child,null,l),t.child.memoizedState=Il(l),t.memoizedState=Dl,i);if(!(1&t.mode))return zl(e,t,l,null);if("$!"===a.data){if(r=a.nextSibling&&a.nextSibling.dataset)var s=r.dgst;return r=s,zl(e,t,l,r=cl(i=Error(o(419)),r,void 0))}if(s=!!(l&e.childLanes),vl||s){if(null!==(r=js)){switch(l&-l){case 4:a=2;break;case 16:a=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:a=32;break;case 536870912:a=268435456;break;default:a=0}0!==(a=a&(r.suspendedLanes|l)?0:a)&&a!==i.retryLane&&(i.retryLane=a,Do(e,a),nu(r,e,a,-1))}return gu(),zl(e,t,l,r=cl(Error(o(421))))}return"$?"===a.data?(t.flags|=128,t.child=e.child,t=_u.bind(null,e),a._reactRetry=t,null):(e=i.treeContext,ro=ua(a.nextSibling),no=t,ao=!0,oo=null,null!==e&&(Wa[Qa++]=Ya,Wa[Qa++]=Za,Wa[Qa++]=Ka,Ya=e.id,Za=e.overflow,Ka=t),t=Fl(t,r.children),t.flags|=4096,t)}(e,t,s,a,r,i,n);if(l){l=a.fallback,s=t.mode,r=(i=e.child).sibling;var u={mode:"hidden",children:a.children};return 1&s||t.child===i?(a=Pu(i,u)).subtreeFlags=14680064&i.subtreeFlags:((a=t.child).childLanes=0,a.pendingProps=u,t.deletions=null),null!==r?l=Pu(r,l):(l=Du(l,s,n,null)).flags|=2,l.return=t,a.return=t,a.sibling=l,t.child=a,a=l,l=t.child,s=null===(s=e.child.memoizedState)?Il(n):{baseLanes:s.baseLanes|n,cachePool:null,transitions:s.transitions},l.memoizedState=s,l.childLanes=e.childLanes&~n,t.memoizedState=Dl,a}return e=(l=e.child).sibling,a=Pu(l,{mode:"visible",children:a.children}),!(1&t.mode)&&(a.lanes=n),a.return=t,a.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=a,t.memoizedState=null,a}function Fl(e,t){return(t=Iu({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function zl(e,t,n,r){return null!==r&&go(r),ko(t,e.child,null,n),(e=Fl(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Bl(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),jo(e.return,t,n)}function $l(e,t,n,r,a){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=a)}function Ul(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(wl(e,t,r.children,n),2&(r=ei.current))r=1&r|2,t.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Bl(e,n,t);else if(19===e.tag)Bl(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Aa(ei,r),1&t.mode)switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===ti(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),$l(t,!1,a,n,o);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===ti(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}$l(t,!0,n,null,o);break;case"together":$l(t,!1,null,null,void 0);break;default:t.memoizedState=null}else t.memoizedState=null;return t.child}function ql(e,t){!(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Hl(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Is|=t.lanes,!(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=Pu(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Pu(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Gl(e,t){if(!ao)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Vl(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=14680064&a.subtreeFlags,r|=14680064&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Wl(e,t,n){var r=t.pendingProps;switch(to(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Vl(t),null;case 1:case 17:return Ra(t.type)&&Pa(),Vl(t),null;case 3:return r=t.stateNode,Zo(),Ca(ja),Ca(Ta),ri(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(po(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,null!==oo&&(iu(oo),oo=null))),Rl(e,t),Vl(t),null;case 5:Jo(t);var a=Ko(Qo.current);if(n=t.type,null!==e&&null!=t.stateNode)Pl(e,t,n,r,a),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(o(166));return Vl(t),null}if(e=Ko(Vo.current),po(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[pa]=t,r[fa]=i,e=!!(1&t.mode),n){case"dialog":zr("cancel",r),zr("close",r);break;case"iframe":case"object":case"embed":zr("load",r);break;case"video":case"audio":for(a=0;a<Dr.length;a++)zr(Dr[a],r);break;case"source":zr("error",r);break;case"img":case"image":case"link":zr("error",r),zr("load",r);break;case"details":zr("toggle",r);break;case"input":Y(r,i),zr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},zr("invalid",r);break;case"textarea":ae(r,i),zr("invalid",r)}for(var s in be(n,i),a=null,i)if(i.hasOwnProperty(s)){var u=i[s];"children"===s?"string"==typeof u?r.textContent!==u&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,u,e),a=["children",u]):"number"==typeof u&&r.textContent!==""+u&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,u,e),a=["children",""+u]):l.hasOwnProperty(s)&&null!=u&&"onScroll"===s&&zr("scroll",r)}switch(n){case"input":V(r),J(r,i,!0);break;case"textarea":V(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Jr)}r=a,t.updateQueue=r,null!==r&&(t.flags|=4)}else{s=9===a.nodeType?a:a.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=le(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=s.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),"select"===n&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[pa]=t,e[fa]=r,Ll(e,t,!1,!1),t.stateNode=e;e:{switch(s=ve(n,r),n){case"dialog":zr("cancel",e),zr("close",e),a=r;break;case"iframe":case"object":case"embed":zr("load",e),a=r;break;case"video":case"audio":for(a=0;a<Dr.length;a++)zr(Dr[a],e);a=r;break;case"source":zr("error",e),a=r;break;case"img":case"image":case"link":zr("error",e),zr("load",e),a=r;break;case"details":zr("toggle",e),a=r;break;case"input":Y(e,r),a=K(e,r),zr("invalid",e);break;case"option":default:a=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=M({},r,{value:void 0}),zr("invalid",e);break;case"textarea":ae(e,r),a=re(e,r),zr("invalid",e)}for(i in be(n,a),u=a)if(u.hasOwnProperty(i)){var c=u[i];"style"===i?he(e,c):"dangerouslySetInnerHTML"===i?null!=(c=c?c.__html:void 0)&&de(e,c):"children"===i?"string"==typeof c?("textarea"!==n||""!==c)&&pe(e,c):"number"==typeof c&&pe(e,""+c):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(l.hasOwnProperty(i)?null!=c&&"onScroll"===i&&zr("scroll",e):null!=c&&v(e,i,c,s))}switch(n){case"input":V(e),J(e,r,!1);break;case"textarea":V(e),ie(e);break;case"option":null!=r.value&&e.setAttribute("value",""+H(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=Jr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Vl(t),null;case 6:if(e&&null!=t.stateNode)Ol(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(o(166));if(n=Ko(Qo.current),Ko(Vo.current),po(t)){if(r=t.stateNode,n=t.memoizedProps,r[pa]=t,(i=r.nodeValue!==n)&&null!==(e=no))switch(e.tag){case 3:Xr(r.nodeValue,n,!!(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Xr(r.nodeValue,n,!!(1&e.mode))}i&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[pa]=t,t.stateNode=r}return Vl(t),null;case 13:if(Ca(ei),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ao&&null!==ro&&1&t.mode&&!(128&t.flags))fo(),mo(),t.flags|=98560,i=!1;else if(i=po(t),null!==r&&null!==r.dehydrated){if(null===e){if(!i)throw Error(o(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(o(317));i[pa]=t}else mo(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Vl(t),i=!1}else null!==oo&&(iu(oo),oo=null),i=!0;if(!i)return 65536&t.flags?t:null}return 128&t.flags?(t.lanes=n,t):((r=null!==r)!==(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,1&t.mode&&(null===e||1&ei.current?0===Os&&(Os=3):gu())),null!==t.updateQueue&&(t.flags|=4),Vl(t),null);case 4:return Zo(),Rl(e,t),null===e&&Ur(t.stateNode.containerInfo),Vl(t),null;case 10:return To(t.type._context),Vl(t),null;case 19:if(Ca(ei),null===(i=t.memoizedState))return Vl(t),null;if(r=!!(128&t.flags),null===(s=i.rendering))if(r)Gl(i,!1);else{if(0!==Os||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(s=ti(e))){for(t.flags|=128,Gl(i,!1),null!==(r=s.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=14680066,null===(s=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,i.type=s.type,e=s.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Aa(ei,1&ei.current|2),t.child}e=e.sibling}null!==i.tail&&Ze()>Us&&(t.flags|=128,r=!0,Gl(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ti(s))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Gl(i,!0),null===i.tail&&"hidden"===i.tailMode&&!s.alternate&&!ao)return Vl(t),null}else 2*Ze()-i.renderingStartTime>Us&&1073741824!==n&&(t.flags|=128,r=!0,Gl(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=i.last)?n.sibling=s:t.child=s,i.last=s)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Ze(),t.sibling=null,n=ei.current,Aa(ei,r?1&n|2:1&n),t):(Vl(t),null);case 22:case 23:return du(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&1&t.mode?!!(1073741824&Rs)&&(Vl(t),6&t.subtreeFlags&&(t.flags|=8192)):Vl(t),null;case 24:case 25:return null}throw Error(o(156,t.tag))}function Ql(e,t){switch(to(t),t.tag){case 1:return Ra(t.type)&&Pa(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Zo(),Ca(ja),Ca(Ta),ri(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 5:return Jo(t),null;case 13:if(Ca(ei),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(o(340));mo()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Ca(ei),null;case 4:return Zo(),null;case 10:return To(t.type._context),null;case 22:case 23:return du(),null;default:return null}}Ll=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Rl=function(){},Pl=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,Ko(Vo.current);var o,i=null;switch(n){case"input":a=K(e,a),r=K(e,r),i=[];break;case"select":a=M({},a,{value:void 0}),r=M({},r,{value:void 0}),i=[];break;case"textarea":a=re(e,a),r=re(e,r),i=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=Jr)}for(c in be(n,r),n=null,a)if(!r.hasOwnProperty(c)&&a.hasOwnProperty(c)&&null!=a[c])if("style"===c){var s=a[c];for(o in s)s.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(l.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in r){var u=r[c];if(s=null!=a?a[c]:void 0,r.hasOwnProperty(c)&&u!==s&&(null!=u||null!=s))if("style"===c)if(s){for(o in s)!s.hasOwnProperty(o)||u&&u.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in u)u.hasOwnProperty(o)&&s[o]!==u[o]&&(n||(n={}),n[o]=u[o])}else n||(i||(i=[]),i.push(c,n)),n=u;else"dangerouslySetInnerHTML"===c?(u=u?u.__html:void 0,s=s?s.__html:void 0,null!=u&&s!==u&&(i=i||[]).push(c,u)):"children"===c?"string"!=typeof u&&"number"!=typeof u||(i=i||[]).push(c,""+u):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(l.hasOwnProperty(c)?(null!=u&&"onScroll"===c&&zr("scroll",e),i||s===u||(i=[])):(i=i||[]).push(c,u))}n&&(i=i||[]).push("style",n);var c=i;(t.updateQueue=c)&&(t.flags|=4)}},Ol=function(e,t,n,r){n!==r&&(t.flags|=4)};var Kl=!1,Yl=!1,Zl="function"==typeof WeakSet?WeakSet:Set,Xl=null;function Jl(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(r){Eu(e,t,r)}else n.current=null}function es(e,t,n){try{n()}catch(r){Eu(e,t,r)}}var ts=!1;function ns(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var a=r=r.next;do{if((a.tag&e)===e){var o=a.destroy;a.destroy=void 0,void 0!==o&&es(t,n,o)}a=a.next}while(a!==r)}}function rs(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function as(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function os(e){var t=e.alternate;null!==t&&(e.alternate=null,os(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[pa],delete t[fa],delete t[ga],delete t[ha],delete t[ya])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function is(e){return 5===e.tag||3===e.tag||4===e.tag}function ls(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||is(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function ss(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Jr));else if(4!==r&&null!==(e=e.child))for(ss(e,t,n),e=e.sibling;null!==e;)ss(e,t,n),e=e.sibling}function us(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(us(e,t,n),e=e.sibling;null!==e;)us(e,t,n),e=e.sibling}var cs=null,ds=!1;function ps(e,t,n){for(n=n.child;null!==n;)fs(e,t,n),n=n.sibling}function fs(e,t,n){if(ot&&"function"==typeof ot.onCommitFiberUnmount)try{ot.onCommitFiberUnmount(at,n)}catch(l){}switch(n.tag){case 5:Yl||Jl(n,t);case 6:var r=cs,a=ds;cs=null,ps(e,t,n),ds=a,null!==(cs=r)&&(ds?(e=cs,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):cs.removeChild(n.stateNode));break;case 18:null!==cs&&(ds?(e=cs,n=n.stateNode,8===e.nodeType?sa(e.parentNode,n):1===e.nodeType&&sa(e,n),Ut(e)):sa(cs,n.stateNode));break;case 4:r=cs,a=ds,cs=n.stateNode.containerInfo,ds=!0,ps(e,t,n),cs=r,ds=a;break;case 0:case 11:case 14:case 15:if(!Yl&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){a=r=r.next;do{var o=a,i=o.destroy;o=o.tag,void 0!==i&&(2&o||4&o)&&es(n,t,i),a=a.next}while(a!==r)}ps(e,t,n);break;case 1:if(!Yl&&(Jl(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Eu(n,t,l)}ps(e,t,n);break;case 21:ps(e,t,n);break;case 22:1&n.mode?(Yl=(r=Yl)||null!==n.memoizedState,ps(e,t,n),Yl=r):ps(e,t,n);break;default:ps(e,t,n)}}function ms(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Zl),t.forEach((function(t){var r=Tu.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function gs(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var a=n[r];try{var i=e,l=t,s=l;e:for(;null!==s;){switch(s.tag){case 5:cs=s.stateNode,ds=!1;break e;case 3:case 4:cs=s.stateNode.containerInfo,ds=!0;break e}s=s.return}if(null===cs)throw Error(o(160));fs(i,l,a),cs=null,ds=!1;var u=a.alternate;null!==u&&(u.return=null),a.return=null}catch(c){Eu(a,t,c)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)hs(t,e),t=t.sibling}function hs(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(gs(t,e),ys(e),4&r){try{ns(3,e,e.return),rs(3,e)}catch(h){Eu(e,e.return,h)}try{ns(5,e,e.return)}catch(h){Eu(e,e.return,h)}}break;case 1:gs(t,e),ys(e),512&r&&null!==n&&Jl(n,n.return);break;case 5:if(gs(t,e),ys(e),512&r&&null!==n&&Jl(n,n.return),32&e.flags){var a=e.stateNode;try{pe(a,"")}catch(h){Eu(e,e.return,h)}}if(4&r&&null!=(a=e.stateNode)){var i=e.memoizedProps,l=null!==n?n.memoizedProps:i,s=e.type,u=e.updateQueue;if(e.updateQueue=null,null!==u)try{"input"===s&&"radio"===i.type&&null!=i.name&&Z(a,i),ve(s,l);var c=ve(s,i);for(l=0;l<u.length;l+=2){var d=u[l],p=u[l+1];"style"===d?he(a,p):"dangerouslySetInnerHTML"===d?de(a,p):"children"===d?pe(a,p):v(a,d,p,c)}switch(s){case"input":X(a,i);break;case"textarea":oe(a,i);break;case"select":var f=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!i.multiple;var m=i.value;null!=m?ne(a,!!i.multiple,m,!1):f!==!!i.multiple&&(null!=i.defaultValue?ne(a,!!i.multiple,i.defaultValue,!0):ne(a,!!i.multiple,i.multiple?[]:"",!1))}a[fa]=i}catch(h){Eu(e,e.return,h)}}break;case 6:if(gs(t,e),ys(e),4&r){if(null===e.stateNode)throw Error(o(162));a=e.stateNode,i=e.memoizedProps;try{a.nodeValue=i}catch(h){Eu(e,e.return,h)}}break;case 3:if(gs(t,e),ys(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ut(t.containerInfo)}catch(h){Eu(e,e.return,h)}break;case 4:default:gs(t,e),ys(e);break;case 13:gs(t,e),ys(e),8192&(a=e.child).flags&&(i=null!==a.memoizedState,a.stateNode.isHidden=i,!i||null!==a.alternate&&null!==a.alternate.memoizedState||($s=Ze())),4&r&&ms(e);break;case 22:if(d=null!==n&&null!==n.memoizedState,1&e.mode?(Yl=(c=Yl)||d,gs(t,e),Yl=c):gs(t,e),ys(e),8192&r){if(c=null!==e.memoizedState,(e.stateNode.isHidden=c)&&!d&&1&e.mode)for(Xl=e,d=e.child;null!==d;){for(p=Xl=d;null!==Xl;){switch(m=(f=Xl).child,f.tag){case 0:case 11:case 14:case 15:ns(4,f,f.return);break;case 1:Jl(f,f.return);var g=f.stateNode;if("function"==typeof g.componentWillUnmount){r=f,n=f.return;try{t=r,g.props=t.memoizedProps,g.state=t.memoizedState,g.componentWillUnmount()}catch(h){Eu(r,n,h)}}break;case 5:Jl(f,f.return);break;case 22:if(null!==f.memoizedState){ks(p);continue}}null!==m?(m.return=f,Xl=m):ks(p)}d=d.sibling}e:for(d=null,p=e;;){if(5===p.tag){if(null===d){d=p;try{a=p.stateNode,c?"function"==typeof(i=a.style).setProperty?i.setProperty("display","none","important"):i.display="none":(s=p.stateNode,l=null!=(u=p.memoizedProps.style)&&u.hasOwnProperty("display")?u.display:null,s.style.display=ge("display",l))}catch(h){Eu(e,e.return,h)}}}else if(6===p.tag){if(null===d)try{p.stateNode.nodeValue=c?"":p.memoizedProps}catch(h){Eu(e,e.return,h)}}else if((22!==p.tag&&23!==p.tag||null===p.memoizedState||p===e)&&null!==p.child){p.child.return=p,p=p.child;continue}if(p===e)break e;for(;null===p.sibling;){if(null===p.return||p.return===e)break e;d===p&&(d=null),p=p.return}d===p&&(d=null),p.sibling.return=p.return,p=p.sibling}}break;case 19:gs(t,e),ys(e),4&r&&ms(e);case 21:}}function ys(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(is(n)){var r=n;break e}n=n.return}throw Error(o(160))}switch(r.tag){case 5:var a=r.stateNode;32&r.flags&&(pe(a,""),r.flags&=-33),us(e,ls(e),a);break;case 3:case 4:var i=r.stateNode.containerInfo;ss(e,ls(e),i);break;default:throw Error(o(161))}}catch(l){Eu(e,e.return,l)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function bs(e,t,n){Xl=e,vs(e,t,n)}function vs(e,t,n){for(var r=!!(1&e.mode);null!==Xl;){var a=Xl,o=a.child;if(22===a.tag&&r){var i=null!==a.memoizedState||Kl;if(!i){var l=a.alternate,s=null!==l&&null!==l.memoizedState||Yl;l=Kl;var u=Yl;if(Kl=i,(Yl=s)&&!u)for(Xl=a;null!==Xl;)s=(i=Xl).child,22===i.tag&&null!==i.memoizedState?xs(a):null!==s?(s.return=i,Xl=s):xs(a);for(;null!==o;)Xl=o,vs(o,t,n),o=o.sibling;Xl=a,Kl=l,Yl=u}ws(e)}else 8772&a.subtreeFlags&&null!==o?(o.return=a,Xl=o):ws(e)}}function ws(e){for(;null!==Xl;){var t=Xl;if(8772&t.flags){var n=t.alternate;try{if(8772&t.flags)switch(t.tag){case 0:case 11:case 15:Yl||rs(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Yl)if(null===n)r.componentDidMount();else{var a=t.elementType===t.type?n.memoizedProps:nl(t.type,n.memoizedProps);r.componentDidUpdate(a,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&&Ho(t,i,r);break;case 3:var l=t.updateQueue;if(null!==l){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Ho(t,l,n)}break;case 5:var s=t.stateNode;if(null===n&&4&t.flags){n=s;var u=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":u.autoFocus&&n.focus();break;case"img":u.src&&(n.src=u.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var c=t.alternate;if(null!==c){var d=c.memoizedState;if(null!==d){var p=d.dehydrated;null!==p&&Ut(p)}}}break;default:throw Error(o(163))}Yl||512&t.flags&&as(t)}catch(f){Eu(t,t.return,f)}}if(t===e){Xl=null;break}if(null!==(n=t.sibling)){n.return=t.return,Xl=n;break}Xl=t.return}}function ks(e){for(;null!==Xl;){var t=Xl;if(t===e){Xl=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Xl=n;break}Xl=t.return}}function xs(e){for(;null!==Xl;){var t=Xl;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{rs(4,t)}catch(s){Eu(t,n,s)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var a=t.return;try{r.componentDidMount()}catch(s){Eu(t,a,s)}}var o=t.return;try{as(t)}catch(s){Eu(t,o,s)}break;case 5:var i=t.return;try{as(t)}catch(s){Eu(t,i,s)}}}catch(s){Eu(t,t.return,s)}if(t===e){Xl=null;break}var l=t.sibling;if(null!==l){l.return=t.return,Xl=l;break}Xl=t.return}}var Ss,Es=Math.ceil,Cs=w.ReactCurrentDispatcher,As=w.ReactCurrentOwner,_s=w.ReactCurrentBatchConfig,Ts=0,js=null,Ns=null,Ls=0,Rs=0,Ps=Ea(0),Os=0,Ds=null,Is=0,Ms=0,Fs=0,zs=null,Bs=null,$s=0,Us=1/0,qs=null,Hs=!1,Gs=null,Vs=null,Ws=!1,Qs=null,Ks=0,Ys=0,Zs=null,Xs=-1,Js=0;function eu(){return 6&Ts?Ze():-1!==Xs?Xs:Xs=Ze()}function tu(e){return 1&e.mode?2&Ts&&0!==Ls?Ls&-Ls:null!==ho.transition?(0===Js&&(Js=gt()),Js):0!==(e=vt)?e:e=void 0===(e=window.event)?16:Yt(e.type):1}function nu(e,t,n,r){if(50<Ys)throw Ys=0,Zs=null,Error(o(185));yt(e,n,r),2&Ts&&e===js||(e===js&&(!(2&Ts)&&(Ms|=n),4===Os&&lu(e,Ls)),ru(e,r),1===n&&0===Ts&&!(1&t.mode)&&(Us=Ze()+500,za&&Ua()))}function ru(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=e.pendingLanes;0<o;){var i=31-it(o),l=1<<i,s=a[i];-1===s?l&n&&!(l&r)||(a[i]=ft(l,t)):s<=t&&(e.expiredLanes|=l),o&=~l}}(e,t);var r=pt(e,e===js?Ls:0);if(0===r)null!==n&&Qe(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Qe(n),1===t)0===e.tag?function(e){za=!0,$a(e)}(su.bind(null,e)):$a(su.bind(null,e)),ia((function(){!(6&Ts)&&Ua()})),n=null;else{switch(wt(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=ju(n,au.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function au(e,t){if(Xs=-1,Js=0,6&Ts)throw Error(o(327));var n=e.callbackNode;if(xu()&&e.callbackNode!==n)return null;var r=pt(e,e===js?Ls:0);if(0===r)return null;if(30&r||r&e.expiredLanes||t)t=hu(e,r);else{t=r;var a=Ts;Ts|=2;var i=mu();for(js===e&&Ls===t||(qs=null,Us=Ze()+500,pu(e,t));;)try{bu();break}catch(s){fu(e,s)}_o(),Cs.current=i,Ts=a,null!==Ns?t=0:(js=null,Ls=0,t=Os)}if(0!==t){if(2===t&&(0!==(a=mt(e))&&(r=a,t=ou(e,a))),1===t)throw n=Ds,pu(e,0),lu(e,r),ru(e,Ze()),n;if(6===t)lu(e,r);else{if(a=e.current.alternate,!(30&r||function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var a=n[r],o=a.getSnapshot;a=a.value;try{if(!lr(o(),a))return!1}catch(l){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(a)||(t=hu(e,r),2===t&&(i=mt(e),0!==i&&(r=i,t=ou(e,i))),1!==t)))throw n=Ds,pu(e,0),lu(e,r),ru(e,Ze()),n;switch(e.finishedWork=a,e.finishedLanes=r,t){case 0:case 1:throw Error(o(345));case 2:case 5:ku(e,Bs,qs);break;case 3:if(lu(e,r),(130023424&r)===r&&10<(t=$s+500-Ze())){if(0!==pt(e,0))break;if(((a=e.suspendedLanes)&r)!==r){eu(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=ra(ku.bind(null,e,Bs,qs),t);break}ku(e,Bs,qs);break;case 4:if(lu(e,r),(4194240&r)===r)break;for(t=e.eventTimes,a=-1;0<r;){var l=31-it(r);i=1<<l,(l=t[l])>a&&(a=l),r&=~i}if(r=a,10<(r=(120>(r=Ze()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Es(r/1960))-r)){e.timeoutHandle=ra(ku.bind(null,e,Bs,qs),r);break}ku(e,Bs,qs);break;default:throw Error(o(329))}}}return ru(e,Ze()),e.callbackNode===n?au.bind(null,e):null}function ou(e,t){var n=zs;return e.current.memoizedState.isDehydrated&&(pu(e,t).flags|=256),2!==(e=hu(e,t))&&(t=Bs,Bs=n,null!==t&&iu(t)),e}function iu(e){null===Bs?Bs=e:Bs.push.apply(Bs,e)}function lu(e,t){for(t&=~Fs,t&=~Ms,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-it(t),r=1<<n;e[n]=-1,t&=~r}}function su(e){if(6&Ts)throw Error(o(327));xu();var t=pt(e,0);if(!(1&t))return ru(e,Ze()),null;var n=hu(e,t);if(0!==e.tag&&2===n){var r=mt(e);0!==r&&(t=r,n=ou(e,r))}if(1===n)throw n=Ds,pu(e,0),lu(e,t),ru(e,Ze()),n;if(6===n)throw Error(o(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,ku(e,Bs,qs),ru(e,Ze()),null}function uu(e,t){var n=Ts;Ts|=1;try{return e(t)}finally{0===(Ts=n)&&(Us=Ze()+500,za&&Ua())}}function cu(e){null!==Qs&&0===Qs.tag&&!(6&Ts)&&xu();var t=Ts;Ts|=1;var n=_s.transition,r=vt;try{if(_s.transition=null,vt=1,e)return e()}finally{vt=r,_s.transition=n,!(6&(Ts=t))&&Ua()}}function du(){Rs=Ps.current,Ca(Ps)}function pu(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,aa(n)),null!==Ns)for(n=Ns.return;null!==n;){var r=n;switch(to(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Pa();break;case 3:Zo(),Ca(ja),Ca(Ta),ri();break;case 5:Jo(r);break;case 4:Zo();break;case 13:case 19:Ca(ei);break;case 10:To(r.type._context);break;case 22:case 23:du()}n=n.return}if(js=e,Ns=e=Pu(e.current,null),Ls=Rs=t,Os=0,Ds=null,Fs=Ms=Is=0,Bs=zs=null,null!==Ro){for(t=0;t<Ro.length;t++)if(null!==(r=(n=Ro[t]).interleaved)){n.interleaved=null;var a=r.next,o=n.pending;if(null!==o){var i=o.next;o.next=a,r.next=i}n.pending=r}Ro=null}return e}function fu(e,t){for(;;){var n=Ns;try{if(_o(),ai.current=Xi,ci){for(var r=li.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ci=!1}if(ii=0,ui=si=li=null,di=!1,pi=0,As.current=null,null===n||null===n.return){Os=1,Ds=t,Ns=null;break}e:{var i=e,l=n.return,s=n,u=t;if(t=Ls,s.flags|=32768,null!==u&&"object"==typeof u&&"function"==typeof u.then){var c=u,d=s,p=d.tag;if(!(1&d.mode||0!==p&&11!==p&&15!==p)){var f=d.alternate;f?(d.updateQueue=f.updateQueue,d.memoizedState=f.memoizedState,d.lanes=f.lanes):(d.updateQueue=null,d.memoizedState=null)}var m=hl(l);if(null!==m){m.flags&=-257,yl(m,l,s,0,t),1&m.mode&&gl(i,c,t),u=c;var g=(t=m).updateQueue;if(null===g){var h=new Set;h.add(u),t.updateQueue=h}else g.add(u);break e}if(!(1&t)){gl(i,c,t),gu();break e}u=Error(o(426))}else if(ao&&1&s.mode){var y=hl(l);if(null!==y){!(65536&y.flags)&&(y.flags|=256),yl(y,l,s,0,t),go(ul(u,s));break e}}i=u=ul(u,s),4!==Os&&(Os=2),null===zs?zs=[i]:zs.push(i),i=l;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t,Uo(i,fl(0,u,t));break e;case 1:s=u;var b=i.type,v=i.stateNode;if(!(128&i.flags||"function"!=typeof b.getDerivedStateFromError&&(null===v||"function"!=typeof v.componentDidCatch||null!==Vs&&Vs.has(v)))){i.flags|=65536,t&=-t,i.lanes|=t,Uo(i,ml(i,s,t));break e}}i=i.return}while(null!==i)}wu(n)}catch(w){t=w,Ns===n&&null!==n&&(Ns=n=n.return);continue}break}}function mu(){var e=Cs.current;return Cs.current=Xi,null===e?Xi:e}function gu(){0!==Os&&3!==Os&&2!==Os||(Os=4),null===js||!(268435455&Is)&&!(268435455&Ms)||lu(js,Ls)}function hu(e,t){var n=Ts;Ts|=2;var r=mu();for(js===e&&Ls===t||(qs=null,pu(e,t));;)try{yu();break}catch(a){fu(e,a)}if(_o(),Ts=n,Cs.current=r,null!==Ns)throw Error(o(261));return js=null,Ls=0,Os}function yu(){for(;null!==Ns;)vu(Ns)}function bu(){for(;null!==Ns&&!Ke();)vu(Ns)}function vu(e){var t=Ss(e.alternate,e,Rs);e.memoizedProps=e.pendingProps,null===t?wu(e):Ns=t,As.current=null}function wu(e){var t=e;do{var n=t.alternate;if(e=t.return,32768&t.flags){if(null!==(n=Ql(n,t)))return n.flags&=32767,void(Ns=n);if(null===e)return Os=6,void(Ns=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}else if(null!==(n=Wl(n,t,Rs)))return void(Ns=n);if(null!==(t=t.sibling))return void(Ns=t);Ns=t=e}while(null!==t);0===Os&&(Os=5)}function ku(e,t,n){var r=vt,a=_s.transition;try{_s.transition=null,vt=1,function(e,t,n,r){do{xu()}while(null!==Qs);if(6&Ts)throw Error(o(327));n=e.finishedWork;var a=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var a=31-it(n),o=1<<a;t[a]=0,r[a]=-1,e[a]=-1,n&=~o}}(e,i),e===js&&(Ns=js=null,Ls=0),!(2064&n.subtreeFlags)&&!(2064&n.flags)||Ws||(Ws=!0,ju(tt,(function(){return xu(),null}))),i=!!(15990&n.flags),!!(15990&n.subtreeFlags)||i){i=_s.transition,_s.transition=null;var l=vt;vt=1;var s=Ts;Ts|=4,As.current=null,function(e,t){if(ea=Ht,fr(e=pr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var a=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(k){n=null;break e}var l=0,s=-1,u=-1,c=0,d=0,p=e,f=null;t:for(;;){for(var m;p!==n||0!==a&&3!==p.nodeType||(s=l+a),p!==i||0!==r&&3!==p.nodeType||(u=l+r),3===p.nodeType&&(l+=p.nodeValue.length),null!==(m=p.firstChild);)f=p,p=m;for(;;){if(p===e)break t;if(f===n&&++c===a&&(s=l),f===i&&++d===r&&(u=l),null!==(m=p.nextSibling))break;f=(p=f).parentNode}p=m}n=-1===s||-1===u?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(ta={focusedElem:e,selectionRange:n},Ht=!1,Xl=t;null!==Xl;)if(e=(t=Xl).child,1028&t.subtreeFlags&&null!==e)e.return=t,Xl=e;else for(;null!==Xl;){t=Xl;try{var g=t.alternate;if(1024&t.flags)switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==g){var h=g.memoizedProps,y=g.memoizedState,b=t.stateNode,v=b.getSnapshotBeforeUpdate(t.elementType===t.type?h:nl(t.type,h),y);b.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent="":9===w.nodeType&&w.documentElement&&w.removeChild(w.documentElement);break;default:throw Error(o(163))}}catch(k){Eu(t,t.return,k)}if(null!==(e=t.sibling)){e.return=t.return,Xl=e;break}Xl=t.return}g=ts,ts=!1}(e,n),hs(n,e),mr(ta),Ht=!!ea,ta=ea=null,e.current=n,bs(n,e,a),Ye(),Ts=s,vt=l,_s.transition=i}else e.current=n;if(Ws&&(Ws=!1,Qs=e,Ks=a),i=e.pendingLanes,0===i&&(Vs=null),function(e){if(ot&&"function"==typeof ot.onCommitFiberRoot)try{ot.onCommitFiberRoot(at,e,void 0,!(128&~e.current.flags))}catch(t){}}(n.stateNode),ru(e,Ze()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)a=t[n],r(a.value,{componentStack:a.stack,digest:a.digest});if(Hs)throw Hs=!1,e=Gs,Gs=null,e;!!(1&Ks)&&0!==e.tag&&xu(),i=e.pendingLanes,1&i?e===Zs?Ys++:(Ys=0,Zs=e):Ys=0,Ua()}(e,t,n,r)}finally{_s.transition=a,vt=r}return null}function xu(){if(null!==Qs){var e=wt(Ks),t=_s.transition,n=vt;try{if(_s.transition=null,vt=16>e?16:e,null===Qs)var r=!1;else{if(e=Qs,Qs=null,Ks=0,6&Ts)throw Error(o(331));var a=Ts;for(Ts|=4,Xl=e.current;null!==Xl;){var i=Xl,l=i.child;if(16&Xl.flags){var s=i.deletions;if(null!==s){for(var u=0;u<s.length;u++){var c=s[u];for(Xl=c;null!==Xl;){var d=Xl;switch(d.tag){case 0:case 11:case 15:ns(8,d,i)}var p=d.child;if(null!==p)p.return=d,Xl=p;else for(;null!==Xl;){var f=(d=Xl).sibling,m=d.return;if(os(d),d===c){Xl=null;break}if(null!==f){f.return=m,Xl=f;break}Xl=m}}}var g=i.alternate;if(null!==g){var h=g.child;if(null!==h){g.child=null;do{var y=h.sibling;h.sibling=null,h=y}while(null!==h)}}Xl=i}}if(2064&i.subtreeFlags&&null!==l)l.return=i,Xl=l;else e:for(;null!==Xl;){if(2048&(i=Xl).flags)switch(i.tag){case 0:case 11:case 15:ns(9,i,i.return)}var b=i.sibling;if(null!==b){b.return=i.return,Xl=b;break e}Xl=i.return}}var v=e.current;for(Xl=v;null!==Xl;){var w=(l=Xl).child;if(2064&l.subtreeFlags&&null!==w)w.return=l,Xl=w;else e:for(l=v;null!==Xl;){if(2048&(s=Xl).flags)try{switch(s.tag){case 0:case 11:case 15:rs(9,s)}}catch(x){Eu(s,s.return,x)}if(s===l){Xl=null;break e}var k=s.sibling;if(null!==k){k.return=s.return,Xl=k;break e}Xl=s.return}}if(Ts=a,Ua(),ot&&"function"==typeof ot.onPostCommitFiberRoot)try{ot.onPostCommitFiberRoot(at,e)}catch(x){}r=!0}return r}finally{vt=n,_s.transition=t}}return!1}function Su(e,t,n){e=Bo(e,t=fl(0,t=ul(n,t),1),1),t=eu(),null!==e&&(yt(e,1,t),ru(e,t))}function Eu(e,t,n){if(3===e.tag)Su(e,e,n);else for(;null!==t;){if(3===t.tag){Su(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Vs||!Vs.has(r))){t=Bo(t,e=ml(t,e=ul(n,e),1),1),e=eu(),null!==t&&(yt(t,1,e),ru(t,e));break}}t=t.return}}function Cu(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=eu(),e.pingedLanes|=e.suspendedLanes&n,js===e&&(Ls&n)===n&&(4===Os||3===Os&&(130023424&Ls)===Ls&&500>Ze()-$s?pu(e,0):Fs|=n),ru(e,t)}function Au(e,t){0===t&&(1&e.mode?(t=ct,!(130023424&(ct<<=1))&&(ct=4194304)):t=1);var n=eu();null!==(e=Do(e,t))&&(yt(e,t,n),ru(e,n))}function _u(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Au(e,n)}function Tu(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(o(314))}null!==r&&r.delete(t),Au(e,n)}function ju(e,t){return We(e,t)}function Nu(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Lu(e,t,n,r){return new Nu(e,t,n,r)}function Ru(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Pu(e,t){var n=e.alternate;return null===n?((n=Lu(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Ou(e,t,n,r,a,i){var l=2;if(r=e,"function"==typeof e)Ru(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case S:return Du(n.children,a,i,t);case E:l=8,a|=8;break;case C:return(e=Lu(12,n,t,2|a)).elementType=C,e.lanes=i,e;case j:return(e=Lu(13,n,t,a)).elementType=j,e.lanes=i,e;case N:return(e=Lu(19,n,t,a)).elementType=N,e.lanes=i,e;case P:return Iu(n,a,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case A:l=10;break e;case _:l=9;break e;case T:l=11;break e;case L:l=14;break e;case R:l=16,r=null;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Lu(l,n,t,a)).elementType=e,t.type=r,t.lanes=i,t}function Du(e,t,n,r){return(e=Lu(7,e,r,t)).lanes=n,e}function Iu(e,t,n,r){return(e=Lu(22,e,r,t)).elementType=P,e.lanes=n,e.stateNode={isHidden:!1},e}function Mu(e,t,n){return(e=Lu(6,e,null,t)).lanes=n,e}function Fu(e,t,n){return(t=Lu(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function zu(e,t,n,r,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ht(0),this.expirationTimes=ht(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ht(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function Bu(e,t,n,r,a,o,i,l,s){return e=new zu(e,t,n,l,s),1===t?(t=1,!0===o&&(t|=8)):t=0,o=Lu(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Mo(o),e}function $u(e){if(!e)return _a;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(o(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Ra(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(o(171))}if(1===e.tag){var n=e.type;if(Ra(n))return Da(e,n,t)}return t}function Uu(e,t,n,r,a,o,i,l,s){return(e=Bu(n,r,!0,e,0,o,0,l,s)).context=$u(null),n=e.current,(o=zo(r=eu(),a=tu(n))).callback=null!=t?t:null,Bo(n,o,a),e.current.lanes=a,yt(e,a,r),ru(e,r),e}function qu(e,t,n,r){var a=t.current,o=eu(),i=tu(a);return n=$u(n),null===t.context?t.context=n:t.pendingContext=n,(t=zo(o,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Bo(a,t,i))&&(nu(e,a,i,o),$o(e,a,i)),i}function Hu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Gu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Vu(e,t){Gu(e,t),(e=e.alternate)&&Gu(e,t)}Ss=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||ja.current)vl=!0;else{if(!(e.lanes&n||128&t.flags))return vl=!1,function(e,t,n){switch(t.tag){case 3:jl(t),mo();break;case 5:Xo(t);break;case 1:Ra(t.type)&&Ia(t);break;case 4:Yo(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,a=t.memoizedProps.value;Aa(So,r._currentValue),r._currentValue=a;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Aa(ei,1&ei.current),t.flags|=128,null):n&t.child.childLanes?Ml(e,t,n):(Aa(ei,1&ei.current),null!==(e=Hl(e,t,n))?e.sibling:null);Aa(ei,1&ei.current);break;case 19:if(r=!!(n&t.childLanes),128&e.flags){if(r)return Ul(e,t,n);t.flags|=128}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),Aa(ei,ei.current),r)break;return null;case 22:case 23:return t.lanes=0,El(e,t,n)}return Hl(e,t,n)}(e,t,n);vl=!!(131072&e.flags)}else vl=!1,ao&&1048576&t.flags&&Ja(t,Va,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;ql(e,t),e=t.pendingProps;var a=La(t,Ta.current);No(t,n),a=hi(null,t,r,e,a,n);var i=yi();return t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ra(r)?(i=!0,Ia(t)):i=!1,t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,Mo(t),a.updater=al,t.stateNode=a,a._reactInternals=t,sl(t,r,e,n),t=Tl(null,t,r,!0,i,n)):(t.tag=0,ao&&i&&eo(t),wl(null,t,a,n),t=t.child),t;case 16:r=t.elementType;e:{switch(ql(e,t),e=t.pendingProps,r=(a=r._init)(r._payload),t.type=r,a=t.tag=function(e){if("function"==typeof e)return Ru(e)?1:0;if(null!=e){if((e=e.$$typeof)===T)return 11;if(e===L)return 14}return 2}(r),e=nl(r,e),a){case 0:t=Al(null,t,r,e,n);break e;case 1:t=_l(null,t,r,e,n);break e;case 11:t=kl(null,t,r,e,n);break e;case 14:t=xl(null,t,r,nl(r.type,e),n);break e}throw Error(o(306,r,""))}return t;case 0:return r=t.type,a=t.pendingProps,Al(e,t,r,a=t.elementType===r?a:nl(r,a),n);case 1:return r=t.type,a=t.pendingProps,_l(e,t,r,a=t.elementType===r?a:nl(r,a),n);case 3:e:{if(jl(t),null===e)throw Error(o(387));r=t.pendingProps,a=(i=t.memoizedState).element,Fo(e,t),qo(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&t.flags){t=Nl(e,t,r,n,a=ul(Error(o(423)),t));break e}if(r!==a){t=Nl(e,t,r,n,a=ul(Error(o(424)),t));break e}for(ro=ua(t.stateNode.containerInfo.firstChild),no=t,ao=!0,oo=null,n=xo(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(mo(),r===a){t=Hl(e,t,n);break e}wl(e,t,r,n)}t=t.child}return t;case 5:return Xo(t),null===e&&uo(t),r=t.type,a=t.pendingProps,i=null!==e?e.memoizedProps:null,l=a.children,na(r,a)?l=null:null!==i&&na(r,i)&&(t.flags|=32),Cl(e,t),wl(e,t,l,n),t.child;case 6:return null===e&&uo(t),null;case 13:return Ml(e,t,n);case 4:return Yo(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=ko(t,null,r,n):wl(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,kl(e,t,r,a=t.elementType===r?a:nl(r,a),n);case 7:return wl(e,t,t.pendingProps,n),t.child;case 8:case 12:return wl(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,i=t.memoizedProps,l=a.value,Aa(So,r._currentValue),r._currentValue=l,null!==i)if(lr(i.value,l)){if(i.children===a.children&&!ja.current){t=Hl(e,t,n);break e}}else for(null!==(i=t.child)&&(i.return=t);null!==i;){var s=i.dependencies;if(null!==s){l=i.child;for(var u=s.firstContext;null!==u;){if(u.context===r){if(1===i.tag){(u=zo(-1,n&-n)).tag=2;var c=i.updateQueue;if(null!==c){var d=(c=c.shared).pending;null===d?u.next=u:(u.next=d.next,d.next=u),c.pending=u}}i.lanes|=n,null!==(u=i.alternate)&&(u.lanes|=n),jo(i.return,n,t),s.lanes|=n;break}u=u.next}}else if(10===i.tag)l=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(l=i.return))throw Error(o(341));l.lanes|=n,null!==(s=l.alternate)&&(s.lanes|=n),jo(l,n,t),l=i.sibling}else l=i.child;if(null!==l)l.return=i;else for(l=i;null!==l;){if(l===t){l=null;break}if(null!==(i=l.sibling)){i.return=l.return,l=i;break}l=l.return}i=l}wl(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=t.pendingProps.children,No(t,n),r=r(a=Lo(a)),t.flags|=1,wl(e,t,r,n),t.child;case 14:return a=nl(r=t.type,t.pendingProps),xl(e,t,r,a=nl(r.type,a),n);case 15:return Sl(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:nl(r,a),ql(e,t),t.tag=1,Ra(r)?(e=!0,Ia(t)):e=!1,No(t,n),il(t,r,a),sl(t,r,a,n),Tl(null,t,r,!0,e,n);case 19:return Ul(e,t,n);case 22:return El(e,t,n)}throw Error(o(156,t.tag))};var Wu="function"==typeof reportError?reportError:function(e){console.error(e)};function Qu(e){this._internalRoot=e}function Ku(e){this._internalRoot=e}function Yu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Zu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Xu(){}function Ju(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o;if("function"==typeof a){var l=a;a=function(){var e=Hu(i);l.call(e)}}qu(t,i,e,a)}else i=function(e,t,n,r,a){if(a){if("function"==typeof r){var o=r;r=function(){var e=Hu(i);o.call(e)}}var i=Uu(t,r,e,0,null,!1,0,"",Xu);return e._reactRootContainer=i,e[ma]=i.current,Ur(8===e.nodeType?e.parentNode:e),cu(),i}for(;a=e.lastChild;)e.removeChild(a);if("function"==typeof r){var l=r;r=function(){var e=Hu(s);l.call(e)}}var s=Bu(e,0,!1,null,0,!1,0,"",Xu);return e._reactRootContainer=s,e[ma]=s.current,Ur(8===e.nodeType?e.parentNode:e),cu((function(){qu(t,s,n,r)})),s}(n,t,e,a,r);return Hu(i)}Ku.prototype.render=Qu.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(o(409));qu(e,t,null,null)},Ku.prototype.unmount=Qu.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;cu((function(){qu(null,e,null,null)})),t[ma]=null}},Ku.prototype.unstable_scheduleHydration=function(e){if(e){var t=Et();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Pt.length&&0!==t&&t<Pt[n].priority;n++);Pt.splice(n,0,e),0===n&&Mt(e)}},kt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=dt(t.pendingLanes);0!==n&&(bt(t,1|n),ru(t,Ze()),!(6&Ts)&&(Us=Ze()+500,Ua()))}break;case 13:cu((function(){var t=Do(e,1);if(null!==t){var n=eu();nu(t,e,1,n)}})),Vu(e,1)}},xt=function(e){if(13===e.tag){var t=Do(e,134217728);if(null!==t)nu(t,e,134217728,eu());Vu(e,134217728)}},St=function(e){if(13===e.tag){var t=tu(e),n=Do(e,t);if(null!==n)nu(n,e,t,eu());Vu(e,t)}},Et=function(){return vt},Ct=function(e,t){var n=vt;try{return vt=e,t()}finally{vt=n}},xe=function(e,t,n){switch(t){case"input":if(X(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=ka(r);if(!a)throw Error(o(90));W(r),X(r,a)}}}break;case"textarea":oe(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Te=uu,je=cu;var ec={usingClientEntryPoint:!1,Events:[va,wa,ka,Ae,_e,uu]},tc={findFiberByHostInstance:ba,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},nc={bundleType:tc.bundleType,version:tc.version,rendererPackageName:tc.rendererPackageName,rendererConfig:tc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ge(e))?null:e.stateNode},findFiberByHostInstance:tc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var rc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!rc.isDisabled&&rc.supportsFiber)try{at=rc.inject(nc),ot=rc}catch(ce){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ec,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Yu(t))throw Error(o(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:x,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Yu(e))throw Error(o(299));var n=!1,r="",a=Wu;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(a=t.onRecoverableError)),t=Bu(e,1,!1,null,0,n,0,r,a),e[ma]=t.current,Ur(8===e.nodeType?e.parentNode:e),new Qu(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(o(188));throw e=Object.keys(e).join(","),Error(o(268,e))}return e=null===(e=Ge(t))?null:e.stateNode},t.flushSync=function(e){return cu(e)},t.hydrate=function(e,t,n){if(!Zu(t))throw Error(o(200));return Ju(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Yu(e))throw Error(o(405));var r=null!=n&&n.hydratedSources||null,a=!1,i="",l=Wu;if(null!=n&&(!0===n.unstable_strictMode&&(a=!0),void 0!==n.identifierPrefix&&(i=n.identifierPrefix),void 0!==n.onRecoverableError&&(l=n.onRecoverableError)),t=Uu(t,null,e,1,null!=n?n:null,a,0,i,l),e[ma]=t.current,Ur(e),r)for(e=0;e<r.length;e++)a=(a=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,a]:t.mutableSourceEagerHydrationData.push(n,a);return new Ku(t)},t.render=function(e,t,n){if(!Zu(t))throw Error(o(200));return Ju(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Zu(e))throw Error(o(40));return!!e._reactRootContainer&&(cu((function(){Ju(null,null,e,!1,(function(){e._reactRootContainer=null,e[ma]=null}))})),!0)},t.unstable_batchedUpdates=uu,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Zu(n))throw Error(o(200));if(null==e||void 0===e._reactInternals)throw Error(o(38));return Ju(e,t,n,!1,r)},t.version="18.3.1-next-f1338f8080-20240426"},5338:(e,t,n)=>{"use strict";var r=n(961);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},961:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(2551)},115:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},545:(e,t,n)=>{"use strict";n.d(t,{mg:()=>J,vd:()=>G});var r=n(6540),a=n(5556),o=n.n(a),i=n(115),l=n.n(i),s=n(311),u=n.n(s),c=n(2833),d=n.n(c);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function g(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var h={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(h).map((function(e){return h[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=S(e,h.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},C=function(e){return S(e,"onChangeClientState")||function(){}},A=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},_=function(e,t){return t.filter((function(e){return void 0!==e[h.BASE]})).map((function(e){return e[h.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},T=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=p({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},j=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},N=function(e){return Array.isArray(e)?e.join(""):e},L=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},R=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},P=[h.NOSCRIPT,h.SCRIPT,h.STYLE],O=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},D=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},I=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},F=function(e,t,n){switch(e){case h.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=I(n,a),[r.createElement(h.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=D(n),o=N(t);return a?"<"+e+' data-rh="true" '+a+">"+O(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+O(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return I(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+O(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===P.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},z=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=L(e.metaTags,v),o=L(t,y),i=L(n,b);return{priorityMethods:{toComponent:function(){return[].concat(M(h.META,a.priority),M(h.LINK,o.priority),M(h.SCRIPT,i.priority))},toString:function(){return F(h.META,a.priority,r)+" "+F(h.LINK,o.priority,r)+" "+F(h.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);f=m.priorityMethods,c=m.linkTags,d=m.metaTags,p=m.scriptTags}return{priority:f,base:F(h.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",a,r),link:F(h.LINK,c,r),meta:F(h.META,d,r),noscript:F(h.NOSCRIPT,o,r),script:F(h.SCRIPT,p,r),style:F(h.STYLE,i,r),title:F(h.TITLE,{title:s,titleAttributes:u},r)}},B=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var V=function(e,t){var n,r=document.head||document.querySelector(h.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},W=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Q=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;W(h.BODY,e.bodyAttributes),W(h.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=N(e)),W(h.TITLE,t)}(c,d);var p={baseTag:V(h.BASE,n),linkTags:V(h.LINK,a),metaTags:V(h.META,o),noscriptTags:V(h.NOSCRIPT,i),scriptTags:V(h.SCRIPT,s),styleTags:V(h.STYLE,u)},f={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),l(e,f,m)},K=null,Y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:_(["href"],e),bodyAttributes:A("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:A("htmlAttributes",e),linkTags:T(h.LINK,["rel","href"],e),metaTags:T(h.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:T(h.NOSCRIPT,["innerHTML"],e),onChangeClientState:C(e),scriptTags:T(h.SCRIPT,["src","innerHTML"],e),styleTags:T(h.STYLE,["cssText"],e),title:E(e),titleAttributes:A("titleAttributes",e),prioritizeSeoTags:j(e,"prioritizeSeoTags")});G.canUseDOM?(t=o,K&&cancelAnimationFrame(K),t.defer?K=requestAnimationFrame((function(){Q(t,(function(){K=null}))})):(Q(t),K=null)):z&&(a=z(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);Y.propTypes={context:q.isRequired},Y.displayName="HelmetDispatcher";var Z=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(R(this.props,"helmetData"),R(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case h.SCRIPT:case h.NOSCRIPT:return{innerHTML:t};case h.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case h.TITLE:return p({},a,((t={})[r.type]=i,t.titleAttributes=p({},o),t));case h.BODY:return p({},a,{bodyAttributes:p({},o)});case h.HTML:return p({},a,{htmlAttributes:p({},o)});default:return p({},a,((n={})[r.type]=p({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=g(r,Z),l=Object.keys(i).reduce((function(e,t){return e[x[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case h.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case h.LINK:case h.META:case h.NOSCRIPT:case h.SCRIPT:case h.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),a=p({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(Y,p({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(Y,p({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},2799:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,h=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case f:return e;default:switch(e=e&&e.$$typeof){case u:case p:case h:case g:case s:return e;default:return t}}case a:return t}}}function x(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=p,t.Fragment=o,t.Lazy=h,t.Memo=g,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return x(e)||k(e)===c},t.isConcurrentMode=x,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===h},t.isMemo=function(e){return k(e)===g},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===f||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===g||e.$$typeof===s||e.$$typeof===u||e.$$typeof===p||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},4363:(e,t,n)=>{"use strict";e.exports=n(2799)},3259:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(6540),s=[],u=[];var c=l.createContext(null);function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),g=null;function h(){return g||(g=e(m.loader)),g.promise}return s.push(h),"function"==typeof m.webpack&&u.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return h()})),p=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),g=e(m.loader),r._loadModule()})),h(),r.state={error:g.error,pastDelay:!1,timedOut:!1,loading:g.loading,loaded:g.loaded},r}r(n,t),n.preload=function(){return h()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.report(t)})),g.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:g.error,loaded:g.loaded,loading:g.loading}),e._clearTimeouts()};g.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextType",c),p}function g(e){return m(d,e)}g.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(p,e)};var h=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){return l.createElement(c.Provider,{value:{report:this.props.report}},l.Children.only(this.props.children))},t}(l.Component);function y(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return y(e)}))}g.Capture=h,g.preloadAll=function(){return new Promise((function(e,t){y(s).then(e,t)}))},g.preloadReady=function(){return new Promise((function(e,t){y(u).then(e,e)}))},e.exports=g},2831:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,v:()=>l});var r=n(6347),a=n(8168),o=n(6540);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.B6)(t,e):n.length?n[n.length-1].match:r.Ix.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.dO,n,e.map((function(e,n){return o.createElement(r.qh,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.A)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.A)({},n,t,{route:e}))}})}))):null}},4625:(e,t,n)=>{"use strict";n.d(t,{I9:()=>d,Kd:()=>c,N_:()=>y,k2:()=>w});var r=n(6347),a=n(2892),o=n(6540),i=n(9231),l=n(8168),s=n(8587),u=n(1561),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.zR)(t.props),t}return(0,a.A)(t,e),t.prototype.render=function(){return o.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(o.Component);var d=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.TM)(t.props),t}return(0,a.A)(t,e),t.prototype.render=function(){return o.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(o.Component);var p=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.yJ)(e,null,null,t):e},m=function(e){return e},g=o.forwardRef;void 0===g&&(g=m);var h=g((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.A)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.A)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=m!==g&&t||n,o.createElement("a",c)}));var y=g((function(e,t){var n=e.component,a=void 0===n?h:n,c=e.replace,d=e.to,y=e.innerRef,b=(0,s.A)(e,["component","replace","to","innerRef"]);return o.createElement(r.XZ.Consumer,null,(function(e){e||(0,u.A)(!1);var n=e.history,r=f(p(d,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.A)({},b,{href:s,navigate:function(){var t=p(d,e.location),r=(0,i.AO)(e.location)===(0,i.AO)(f(t));(c||r?n.replace:n.push)(t)}});return m!==g?h.ref=t||y:h.innerRef=y,o.createElement(a,h)}))})),b=function(e){return e},v=o.forwardRef;void 0===v&&(v=b);var w=v((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,d=e.activeStyle,m=e.className,g=e.exact,h=e.isActive,w=e.location,k=e.sensitive,x=e.strict,S=e.style,E=e.to,C=e.innerRef,A=(0,s.A)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.XZ.Consumer,null,(function(e){e||(0,u.A)(!1);var n=w||e.location,i=f(p(E,n),n),s=i.pathname,_=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),T=_?(0,r.B6)(n.pathname,{path:_,exact:g,sensitive:k,strict:x}):null,j=!!(h?h(T,n):T),N="function"==typeof m?m(j):m,L="function"==typeof S?S(j):S;j&&(N=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(N,c),L=(0,l.A)({},L,d));var R=(0,l.A)({"aria-current":j&&a||null,className:N,style:L,to:i},A);return b!==v?R.ref=t||C:R.innerRef=C,o.createElement(y,R)}))}))},6347:(e,t,n)=>{"use strict";n.d(t,{B6:()=>j,Ix:()=>v,W6:()=>F,XZ:()=>b,dO:()=>I,qh:()=>N,rd:()=>C,zy:()=>z});var r=n(2892),a=n(6540),o=n(5556),i=n.n(o),l=n(9231),s=n(1561),u=n(8168),c=n(5302),d=n.n(c),p=(n(4363),n(8587)),f=(n(4146),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var g=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.A)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){(0|e.observedBits)&n&&e.setState({value:e.getValue()})},e}(0,r.A)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},h=function(e){var t=g();return t.displayName=e,t},y=h("Router-History"),b=h("Router"),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.A)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;var w=function(e){function t(){return e.apply(this,arguments)||this}(0,r.A)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(a.Component);var k={},x=1e4,S=0;function E(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(k[e])return k[e];var t=d().compile(e);return S<x&&(k[e]=t,S++),t}(e)(t,{pretty:!0})}function C(e){var t=e.computedMatch,n=e.to,r=e.push,o=void 0!==r&&r;return a.createElement(b.Consumer,null,(function(e){e||(0,s.A)(!1);var r=e.history,i=e.staticContext,c=o?r.push:r.replace,d=(0,l.yJ)(t?"string"==typeof n?E(n,t.params):(0,u.A)({},n,{pathname:E(n.pathname,t.params)}):n);return i?(c(d),null):a.createElement(w,{onMount:function(){c(d)},onUpdate:function(e,t){var n=(0,l.yJ)(t.to);(0,l.Fu)(n,(0,u.A)({},d,{key:n.key}))||c(d)},to:n})}))}var A={},_=1e4,T=0;function j(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=A[n]||(A[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return T<_&&(r[e]=o,T++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],p=s.slice(1),f=e===c;return o&&!f?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var N=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.A)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?j(n.pathname,e.props):t.match,o=(0,u.A)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function L(e){return"/"===e.charAt(0)?e:"/"+e}function R(e,t){if(!e)return t;var n=L(e);return 0!==t.pathname.indexOf(n)?t:(0,u.A)({},t,{pathname:t.pathname.substr(n.length)})}function P(e){return"string"==typeof e?e:(0,l.AO)(e)}function O(e){return function(){(0,s.A)(!1)}}function D(){}a.Component;var I=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.A)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?j(o.pathname,(0,u.A)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var M=a.useContext;function F(){return M(y)}function z(){return M(b).location}},1020:(e,t,n)=>{"use strict";var r=n(6540),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,n){var r,o={},u=null,c=null;for(r in void 0!==n&&(u=""+n),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(c=t.ref),t)i.call(t,r)&&!s.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:a,type:e,key:u,ref:c,props:o,_owner:l.current}}t.Fragment=o,t.jsx=u,t.jsxs=u},5287:(e,t)=>{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),s=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),f=Symbol.iterator;var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,h={};function y(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=v.prototype=new b;w.constructor=v,g(w,y.prototype),w.isPureReactComponent=!0;var k=Array.isArray,x=Object.prototype.hasOwnProperty,S={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function C(e,t,r){var a,o={},i=null,l=null;if(null!=t)for(a in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,a)&&!E.hasOwnProperty(a)&&(o[a]=t[a]);var s=arguments.length-2;if(1===s)o.children=r;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(a in s=e.defaultProps)void 0===o[a]&&(o[a]=s[a]);return{$$typeof:n,type:e,key:i,ref:l,props:o,_owner:S.current}}function A(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var _=/\/+/g;function T(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function j(e,t,a,o,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case n:case r:s=!0}}if(s)return i=i(s=e),e=""===o?"."+T(s,0):o,k(i)?(a="",null!=e&&(a=e.replace(_,"$&/")+"/"),j(i,t,a,"",(function(e){return e}))):null!=i&&(A(i)&&(i=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,a+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(_,"$&/")+"/")+e)),t.push(i)),1;if(s=0,o=""===o?".":o+":",k(e))for(var u=0;u<e.length;u++){var c=o+T(l=e[u],u);s+=j(l,t,a,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=j(l=l.value,t,a,c=o+T(l,u++),i);else if("object"===l)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function N(e,t,n){if(null==e)return e;var r=[],a=0;return j(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function L(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var R={current:null},P={transition:null},O={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:P,ReactCurrentOwner:S};function D(){throw Error("act(...) is not supported in production builds of React.")}t.Children={map:N,forEach:function(e,t,n){N(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return N(e,(function(){t++})),t},toArray:function(e){return N(e,(function(e){return e}))||[]},only:function(e){if(!A(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=y,t.Fragment=a,t.Profiler=i,t.PureComponent=v,t.StrictMode=o,t.Suspense=c,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=O,t.act=D,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var a=g({},e.props),o=e.key,i=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,l=S.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var s=e.type.defaultProps;for(u in t)x.call(t,u)&&!E.hasOwnProperty(u)&&(a[u]=void 0===t[u]&&void 0!==s?s[u]:t[u])}var u=arguments.length-2;if(1===u)a.children=r;else if(1<u){s=Array(u);for(var c=0;c<u;c++)s[c]=arguments[c+2];a.children=s}return{$$typeof:n,type:e.type,key:o,ref:i,props:a,_owner:l}},t.createContext=function(e){return(e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:l,_context:e},e.Consumer=e},t.createElement=C,t.createFactory=function(e){var t=C.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:u,render:e}},t.isValidElement=A,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=P.transition;P.transition={};try{e()}finally{P.transition=t}},t.unstable_act=D,t.useCallback=function(e,t){return R.current.useCallback(e,t)},t.useContext=function(e){return R.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return R.current.useDeferredValue(e)},t.useEffect=function(e,t){return R.current.useEffect(e,t)},t.useId=function(){return R.current.useId()},t.useImperativeHandle=function(e,t,n){return R.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return R.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return R.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return R.current.useMemo(e,t)},t.useReducer=function(e,t,n){return R.current.useReducer(e,t,n)},t.useRef=function(e){return R.current.useRef(e)},t.useState=function(e){return R.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return R.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return R.current.useTransition()},t.version="18.3.1"},6540:(e,t,n)=>{"use strict";e.exports=n(5287)},4848:(e,t,n)=>{"use strict";e.exports=n(1020)},7463:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,a=e[r];if(!(0<o(a,t)))break e;e[r]=t,e[n]=a,n=r}}function r(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length,i=a>>>1;r<i;){var l=2*(r+1)-1,s=e[l],u=l+1,c=e[u];if(0>o(s,n))u<a&&0>o(c,s)?(e[r]=c,e[u]=n,r=u):(e[r]=s,e[l]=n,r=l);else{if(!(u<a&&0>o(c,n)))break e;e[r]=c,e[u]=n,r=u}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var u=[],c=[],d=1,p=null,f=3,m=!1,g=!1,h=!1,y="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,v="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(c);null!==t;){if(null===t.callback)a(c);else{if(!(t.startTime<=e))break;a(c),t.sortIndex=t.expirationTime,n(u,t)}t=r(c)}}function k(e){if(h=!1,w(e),!g)if(null!==r(u))g=!0,P(x);else{var t=r(c);null!==t&&O(k,t.startTime-e)}}function x(e,n){g=!1,h&&(h=!1,b(A),A=-1),m=!0;var o=f;try{for(w(n),p=r(u);null!==p&&(!(p.expirationTime>n)||e&&!j());){var i=p.callback;if("function"==typeof i){p.callback=null,f=p.priorityLevel;var l=i(p.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?p.callback=l:p===r(u)&&a(u),w(n)}else a(u);p=r(u)}if(null!==p)var s=!0;else{var d=r(c);null!==d&&O(k,d.startTime-n),s=!1}return s}finally{p=null,f=o,m=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var S,E=!1,C=null,A=-1,_=5,T=-1;function j(){return!(t.unstable_now()-T<_)}function N(){if(null!==C){var e=t.unstable_now();T=e;var n=!0;try{n=C(!0,e)}finally{n?S():(E=!1,C=null)}}else E=!1}if("function"==typeof v)S=function(){v(N)};else if("undefined"!=typeof MessageChannel){var L=new MessageChannel,R=L.port2;L.port1.onmessage=N,S=function(){R.postMessage(null)}}else S=function(){y(N,0)};function P(e){C=e,E||(E=!0,S())}function O(e,n){A=y((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){g||m||(g=!0,P(x))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):_=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return f},t.unstable_getFirstCallbackNode=function(){return r(u)},t.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},t.unstable_scheduleCallback=function(e,a,o){var i=t.unstable_now();switch("object"==typeof o&&null!==o?o="number"==typeof(o=o.delay)&&0<o?i+o:i:o=i,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:d++,callback:a,priorityLevel:e,startTime:o,expirationTime:l=o+l,sortIndex:-1},o>i?(e.sortIndex=o,n(c,e),null===r(u)&&e===r(c)&&(h?(b(A),A=-1):h=!0,O(k,o-i))):(e.sortIndex=l,n(u,e),g||m||(g=!0,P(x))),e},t.unstable_shouldYield=j,t.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}},9982:(e,t,n)=>{"use strict";e.exports=n(7463)},2833:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},4784:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Pingvin Share",tagline:"Pingvin Share is self-hosted file sharing platform and an alternative for WeTransfer.",favicon:"img/pingvinshare.svg",url:"https://stonith404.github.io",baseUrl:"/pingvin-share/",organizationName:"stonith404",projectName:"pingvin-share",onBrokenLinks:"warn",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{routeBasePath:"/",sidebarPath:"./sidebars.ts",editUrl:"https://github.com/stonith404/pingvin-share/docs/docs"},blog:!1}]],themeConfig:{image:"img/pingvinshare.jpg",navbar:{title:"Pingvin Share",logo:{alt:"Pingvin Share Logo",src:"img/pingvinshare.svg"},items:[{href:"https://github.com/stonith404/pingvin-share",label:"GitHub",position:"right"}],hideOnScroll:!1},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,future:{experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{format:"mdx",mermaid:!1,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1}}}},8168:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(null,arguments)}n.d(t,{A:()=>r})},2892:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>a})},8587:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},4164:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}n.d(t,{A:()=>a});const a=function(){for(var e,t,n=0,a="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},1765:(e,t,n)=>{"use strict";n.d(t,{My:()=>_,f4:()=>ee});var r,a,o,i,l,s,u,c=n(6540),d=n(4164),p=Object.create,f=Object.defineProperty,m=Object.defineProperties,g=Object.getOwnPropertyDescriptor,h=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&x(e,n,t[n]);if(b)for(var n of b(t))k.call(t,n)&&x(e,n,t[n]);return e},E=(e,t)=>m(e,h(t)),C=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},A=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};if(r.hooks.run("before-tokenize",o),!o.grammar)throw new Error('The language "'+o.language+'" has no grammar.');return o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var m=0;m<f.length;++m){if(d&&d.cause==p+","+m)return;var g=f[m],h=g.inside,y=!!g.lookbehind,b=!!g.greedy,v=g.alias;if(b&&!g.pattern.global){var w=g.pattern.toString().match(/[imsuy]*$/)[0];g.pattern=RegExp(g.pattern.source,w+"g")}for(var k=g.pattern||g,x=l.next,S=c;x!==t.tail&&!(d&&S>=d.reach);S+=x.value.length,x=x.next){var E=x.value;if(t.length>e.length)return;if(!(E instanceof a)){var C,A=1;if(b){if(!(C=o(k,S,e,y))||C.index>=e.length)break;var _=C.index,T=C.index+C[0].length,j=S;for(j+=x.value.length;_>=j;)j+=(x=x.next).value.length;if(S=j-=x.value.length,x.value instanceof a)continue;for(var N=x;N!==t.tail&&(j<T||"string"==typeof N.value);N=N.next)A++,j+=N.value.length;A--,E=e.slice(S,j),C.index-=S}else if(!(C=o(k,0,E,y)))continue;_=C.index;var L=C[0],R=E.slice(0,_),P=E.slice(_+L.length),O=S+E.length;d&&O>d.reach&&(d.reach=O);var D=x.prev;if(R&&(D=s(t,D,R),S+=R.length),u(t,D,A),x=s(t,D,new a(p,h?r.tokenize(L,h):L,v,L)),P&&s(t,x,P),A>1){var I={cause:p+","+m,reach:O};i(e,t,n,x.prev,S,I),d&&I.reach>d.reach&&(d.reach=I.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}();t.exports=n,n.default=n}},function(){return a||(0,r[y(r)[0]])((a={exports:{}}).exports,a),a.exports}),_=((e,t,n)=>(n=null!=e?p(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of y(t))w.call(e,a)||a===n||f(e,a,{get:()=>t[a],enumerable:!(r=g(t,a))||r.enumerable});return e})(!t&&e&&e.__esModule?n:f(n,"default",{value:e,enumerable:!0}),e)))(A());_.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},_.languages.markup.tag.inside["attr-value"].inside.entity=_.languages.markup.entity,_.languages.markup.doctype.inside["internal-subset"].inside=_.languages.markup,_.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(_.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:_.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:_.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:n},_.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(_.languages.markup.tag,"addAttribute",{value:function(e,t){_.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:_.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),_.languages.html=_.languages.markup,_.languages.mathml=_.languages.markup,_.languages.svg=_.languages.markup,_.languages.xml=_.languages.extend("markup",{}),_.languages.ssml=_.languages.xml,_.languages.atom=_.languages.xml,_.languages.rss=_.languages.xml,o=_,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},s="(?:[^\\\\-]|"+(l=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",s=RegExp(s+"-"+s),u={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},o.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:l,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:l}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":u}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:l,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":u}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}},_.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},_.languages.javascript=_.languages.extend("clike",{"class-name":[_.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),_.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,_.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:_.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:_.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:_.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:_.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:_.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),_.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:_.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),_.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),_.languages.markup&&(_.languages.markup.tag.addInlined("script","javascript"),_.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),_.languages.js=_.languages.javascript,_.languages.actionscript=_.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),_.languages.actionscript["class-name"].alias="function",delete _.languages.actionscript.parameter,delete _.languages.actionscript["literal-property"],_.languages.markup&&_.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:_.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(_),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach((function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},a="doc-comment";if(o=e.languages[t]){var o,i=o[a];if((i=i||(o=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[a])instanceof RegExp&&(i=o[a]={pattern:i}),Array.isArray(i))for(var l=0,s=i.length;l<s;l++)i[l]instanceof RegExp&&(i[l]={pattern:i[l]}),r(i[l]);else r(i)}}))}}),t.addSupport(["java","javascript","php"],t)}(_),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;(t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup))&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(_),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=(t=(e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(_),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(_),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a,o=t[n];"code"!==o.type?e(o.content):(a=o.content[1],o=o.content[3],a&&o&&"code-language"===a.type&&"code-block"===o.type&&"string"==typeof a.content&&(a=a.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),a="language-"+(a=(/[a-z][\w-]*/i.exec(a)||[""])[0].toLowerCase()),o.alias?"string"==typeof o.alias?o.alias=[o.alias,a]:o.alias.push(a):o.alias=[a]))}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r];if(o=/language-(.+)/.exec(o)){n=o[1];break}}var u,c=e.languages[n];c?t.content=e.highlight(t.content.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;return"#"===(t=t.toLowerCase())[0]?(n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n)):l[t]||e})),c,n):n&&"none"!==n&&e.plugins.autoloader&&(u="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=u,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(u);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))})))}})),RegExp(e.languages.markup.tag.pattern.source,"gi")),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(_),_.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:_.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},_.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=p(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(f(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,f(c(0),"property-mutation"),0<a.length)){var l=p(/^\{$/,/^\}$/);if(-1!==l)for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&0<=a.indexOf(u.content)&&f(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return}return 1}function p(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0==--a)return o}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),_.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function s(t,n,i){var s=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),u=0,c={},d=(s=l(s.map((function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=u++,n="___"+i.toUpperCase()+"_"+r+"___")););return c[n]=e,n})).join(""),n,i),Object.keys(c));return u=0,function t(n){for(var o=0;o<n.length;o++){if(u>=d.length)return;var i,s,p,f,m,g,h,y=n[o];"string"==typeof y||"string"==typeof y.content?(i=d[u],-1!==(h=(g="string"==typeof y?y:y.content).indexOf(i))&&(++u,s=g.substring(0,h),m=c[i],p=void 0,(f={})["interpolation-punctuation"]=a,3===(f=e.tokenize(m,f)).length&&((p=[1,1]).push.apply(p,l(f[1],e.languages.javascript,"javascript")),f.splice.apply(f,p)),p=new e.Token("interpolation",f,r.alias,m),f=g.substring(h+i.length),m=[],s&&m.push(s),m.push(p),f&&(t(g=[f]),m.push.apply(m,g)),"string"==typeof y?(n.splice.apply(n,[o,1].concat(m)),o+=m.length-1):y.content=m)):(h=y.content,Array.isArray(h)?t(h):t([h]))}}(s),new e.Token(i,s,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function c(e){return"string"==typeof e?e:Array.isArray(e)?e.map(c).join(""):c(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in u&&function t(n){for(var r=0,a=n.length;r<a;r++){var o,i,l,u=n[r];"string"!=typeof u&&(o=u.content,Array.isArray(o)?"template-string"===u.type?(u=o[1],3===o.length&&"string"!=typeof u&&"embedded-code"===u.type&&(i=c(u),u=u.alias,u=Array.isArray(u)?u[0]:u,l=e.languages[u])&&(o[1]=s(i,l,u))):t(o):"string"!=typeof o&&t([o]))}}(t.tokens)}))}(_),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(_),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g,(function(){return n}))),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(_),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(_),_.languages.n4js=_.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),_.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),_.languages.n4jsd=_.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];a=(o="RegExp"===e.util.type(o)?e.languages.javascript[a]={pattern:o}:o).inside||{};(o.inside=a)["maybe-class-name"]=/^[A-Z][\s\S]*/}}(_),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}function i(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;"string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?0<n.length&&n[n.length-1].tagName===l(a.content[0].content[1])&&n.pop():"/>"!==a.content[a.content.length-1].content&&n.push({tagName:l(a.content[0].content[1]),openedBraces:0}):0<n.length&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:0<n.length&&0<n[n.length-1].openedBraces&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&0<n.length&&0===n[n.length-1].openedBraces&&(o=l(a),r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(o+=l(t[r+1]),t.splice(r+1,1)),0<r&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(o=l(t[r-1])+o,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",o,null,o)),a.content&&"string"!=typeof a.content&&i(a.content)}}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var l=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(l).join(""):""};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)}))}(_),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(_),_.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},_.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=_.languages.swift})),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(_),_.languages.c=_.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),_.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),_.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},_.languages.c.string],char:_.languages.c.char,comment:_.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:_.languages.c}}}}),_.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete _.languages.c.boolean,_.languages.objectivec=_.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete _.languages.objectivec["class-name"],_.languages.objc=_.languages.objectivec,_.languages.reason=_.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),_.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete _.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,(function(){return t}));t=t.replace(/<self>/g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(_),_.languages.go=_.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),_.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete _.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(_),_.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},_.languages.python["string-interpolation"].inside.interpolation.inside.rest=_.languages.python,_.languages.py=_.languages.python;((e,t)=>{for(var n in t)f(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>T,duotoneDark:()=>j,duotoneLight:()=>N,github:()=>L,jettwaveDark:()=>H,jettwaveLight:()=>G,nightOwl:()=>R,nightOwlLight:()=>P,oceanicNext:()=>I,okaidia:()=>M,oneDark:()=>V,oneLight:()=>W,palenight:()=>F,shadesOfPurple:()=>z,synthwave84:()=>B,ultramin:()=>$,vsDark:()=>U,vsLight:()=>q});var T={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},j={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},N={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},L={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},R={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},P={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},O="#c5a5c5",D="#8dc891",I={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:O}},{types:["attr-value"],style:{color:D}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:D}},{types:["punctuation"],style:{color:D}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:O}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},M={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},F={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},z={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},B={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},$={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},U={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},q={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},H={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},G={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},V={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},W={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},Q=(e,t)=>{const{plain:n}=e,r=e.styles.reduce(((e,n)=>{const{languages:r,style:a}=n;return r&&!r.includes(t)||n.types.forEach((t=>{const n=S(S({},e[t]),a);e[t]=n})),e}),{});return r.root=n,r.plain=E(S({},n),{backgroundColor:void 0}),r},K=/\r\n|\r|\n/,Y=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},Z=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},X=e=>{const t=[[]],n=[e],r=[0],a=[e.length];let o=0,i=0,l=[];const s=[l];for(;i>-1;){for(;(o=r[i]++)<a[i];){let e,u=t[i];const c=n[i][o];if("string"==typeof c?(u=i>0?u:["plain"],e=c):(u=Z(u,c.type),c.alias&&(u=Z(u,c.alias)),e=c.content),"string"!=typeof e){i++,t.push(u),n.push(e),r.push(0),a.push(e.length);continue}const d=e.split(K),p=d.length;l.push({types:u,content:d[0]});for(let t=1;t<p;t++)Y(l),s.push(l=[]),l.push({types:u,content:d[t]})}i--,t.pop(),n.pop(),r.pop(),a.pop()}return Y(l),s},J=({children:e,language:t,code:n,theme:r,prism:a})=>{const o=t.toLowerCase(),i=((e,t)=>{const[n,r]=(0,c.useState)(Q(t,e)),a=(0,c.useRef)(),o=(0,c.useRef)();return(0,c.useEffect)((()=>{t===a.current&&e===o.current||(a.current=t,o.current=e,r(Q(t,e)))}),[e,t]),n})(o,r),l=(e=>(0,c.useCallback)((t=>{var n=t,{className:r,style:a,line:o}=n,i=C(n,["className","style","line"]);const l=E(S({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof a&&(l.style=S(S({},l.style||{}),a)),l}),[e]))(i),s=(e=>{const t=(0,c.useCallback)((({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map((t=>e[t])))}),[e]);return(0,c.useCallback)((e=>{var n=e,{token:r,className:a,style:o}=n,i=C(n,["token","className","style"]);const l=E(S({},i),{className:(0,d.A)("token",...r.types,a),children:r.content,style:t(r)});return null!=o&&(l.style=S(S({},l.style||{}),o)),l}),[t])})(i),u=(({prism:e,code:t,grammar:n,language:r})=>{const a=(0,c.useRef)(e);return(0,c.useMemo)((()=>{if(null==n)return X([t]);const e={code:t,grammar:n,language:r,tokens:[]};return a.current.hooks.run("before-tokenize",e),e.tokens=a.current.tokenize(t,n),a.current.hooks.run("after-tokenize",e),X(e.tokens)}),[t,n,r])})({prism:a,language:o,code:n,grammar:a.languages[o]});return e({tokens:u,className:`prism-code language-${o}`,style:null!=i?i.root:{},getLineProps:l,getTokenProps:s})},ee=e=>(0,c.createElement)(J,E(S({},e),{prism:e.prism||_,theme:e.theme||U,code:e.code,language:e.language}))},1561:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},2654:e=>{"use strict";e.exports={}},4054:e=>{"use strict";e.exports=JSON.parse('{"/pingvin-share/-3d6":{"__comp":"1df93b7f","__context":{"plugin":"a7456010"},"config":"5e9f5e1a"},"/pingvin-share/-9bf":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/pingvin-share/-859":{"__comp":"a7bd4aaa","__props":"7cbc9cee"},"/pingvin-share/-0bf":{"__comp":"a94703ab"},"/pingvin-share/How to/contribute-d16":{"__comp":"17896441","content":"ffb3bb1a"},"/pingvin-share/How to/translate-27d":{"__comp":"17896441","content":"36493d4b"},"/pingvin-share/introduction-5fa":{"__comp":"17896441","content":"0e384e19"},"/pingvin-share/setup/configuration-710":{"__comp":"17896441","content":"d131c913"},"/pingvin-share/setup/installation-4f3":{"__comp":"17896441","content":"a8c31fc1"},"/pingvin-share/setup/integrations-30f":{"__comp":"17896441","content":"a0d20388"},"/pingvin-share/setup/oauth2login-1ca":{"__comp":"17896441","content":"3f2e6990"},"/pingvin-share/setup/upgrading-1a5":{"__comp":"17896441","content":"3205bd6d"}}')}},e=>{e.O(0,[869],(()=>{return t=8536,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.876bc575.js.LICENSE.txt b/assets/js/main.876bc575.js.LICENSE.txt new file mode 100644 index 0000000..91dc894 --- /dev/null +++ b/assets/js/main.876bc575.js.LICENSE.txt @@ -0,0 +1,64 @@ +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +/*! Bundled license information: + +prismjs/prism.js: + (** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT <https://opensource.org/licenses/MIT> + * @author Lea Verou <https://lea.verou.me> + * @namespace + * @public + *) +*/ + +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/assets/js/runtime~main.40a3a5be.js b/assets/js/runtime~main.40a3a5be.js new file mode 100644 index 0000000..f777e0a --- /dev/null +++ b/assets/js/runtime~main.40a3a5be.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,t,r,a,o,n={},i={};function d(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={id:e,loaded:!1,exports:{}};return n[e].call(r.exports,r,r.exports,d),r.loaded=!0,r.exports}d.m=n,d.c=i,e=[],d.O=(t,r,a,o)=>{if(!r){var n=1/0;for(u=0;u<e.length;u++){r=e[u][0],a=e[u][1],o=e[u][2];for(var i=!0,c=0;c<r.length;c++)(!1&o||n>=o)&&Object.keys(d.O).every((e=>d.O[e](r[c])))?r.splice(c--,1):(i=!1,o<n&&(n=o));if(i){e.splice(u--,1);var f=a();void 0!==f&&(t=f)}}return t}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]},d.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return d.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);d.r(o);var n={};t=t||[null,r({}),r([]),r(r)];for(var i=2&a&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach((t=>n[t]=()=>e[t]));return n.default=()=>e,d.d(o,n),o},d.d=(e,t)=>{for(var r in t)d.o(t,r)&&!d.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((t,r)=>(d.f[r](e,t),t)),[])),d.u=e=>"assets/js/"+({48:"a94703ab",98:"a7bd4aaa",99:"a8c31fc1",126:"d131c913",202:"36493d4b",235:"a7456010",284:"ffb3bb1a",361:"3205bd6d",401:"17896441",537:"a0d20388",583:"1df93b7f",647:"5e95c892",742:"aba21aa0",819:"3f2e6990",862:"7cbc9cee",976:"0e384e19"}[e]||e)+"."+{48:"eb98faa6",98:"96f06b44",99:"34ec6f0d",126:"b751eb49",202:"b0bd8bf4",235:"91f0b3e9",237:"f947e7e3",284:"e6fb6a6c",361:"86b778bb",401:"5e15038e",537:"cc3ff9b4",583:"414879d5",647:"59168106",742:"ad2b3c84",819:"91d251d4",862:"324e9707",976:"faa15ffa"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a={},o="pingvindocs:",d.l=(e,t,r,n)=>{if(a[e])a[e].push(t);else{var i,c;if(void 0!==r)for(var f=document.getElementsByTagName("script"),u=0;u<f.length;u++){var b=f[u];if(b.getAttribute("src")==e||b.getAttribute("data-webpack")==o+r){i=b;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,d.nc&&i.setAttribute("nonce",d.nc),i.setAttribute("data-webpack",o+r),i.src=e),a[e]=[t];var l=(t,r)=>{i.onerror=i.onload=null,clearTimeout(s);var o=a[e];if(delete a[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(r))),t)return t(r)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=l.bind(null,i.onerror),i.onload=l.bind(null,i.onload),c&&document.head.appendChild(i)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/pingvin-share/",d.gca=function(e){return e={17896441:"401",a94703ab:"48",a7bd4aaa:"98",a8c31fc1:"99",d131c913:"126","36493d4b":"202",a7456010:"235",ffb3bb1a:"284","3205bd6d":"361",a0d20388:"537","1df93b7f":"583","5e95c892":"647",aba21aa0:"742","3f2e6990":"819","7cbc9cee":"862","0e384e19":"976"}[e]||e,d.p+d.u(e)},(()=>{var e={354:0,869:0};d.f.j=(t,r)=>{var a=d.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else if(/^(354|869)$/.test(t))e[t]=0;else{var o=new Promise(((r,o)=>a=e[t]=[r,o]));r.push(a[2]=o);var n=d.p+d.u(t),i=new Error;d.l(n,(r=>{if(d.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var o=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;i.message="Loading chunk "+t+" failed.\n("+o+": "+n+")",i.name="ChunkLoadError",i.type=o,i.request=n,a[1](i)}}),"chunk-"+t,t)}},d.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,n=r[0],i=r[1],c=r[2],f=0;if(n.some((t=>0!==e[t]))){for(a in i)d.o(i,a)&&(d.m[a]=i[a]);if(c)var u=c(d)}for(t&&t(r);f<n.length;f++)o=n[f],d.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return d.O(u)},r=self.webpackChunkpingvindocs=self.webpackChunkpingvindocs||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})()})(); \ No newline at end of file diff --git a/backend/.eslintrc.json b/backend/.eslintrc.json deleted file mode 100644 index 8efdd5f..0000000 --- a/backend/.eslintrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], - "parser": "@typescript-eslint/parser", - "plugins": ["@typescript-eslint"], - "root": true -} diff --git a/backend/.prettierignore b/backend/.prettierignore deleted file mode 100644 index 36d77d2..0000000 --- a/backend/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -/src/constants.ts \ No newline at end of file diff --git a/backend/nest-cli.json b/backend/nest-cli.json deleted file mode 100644 index fb0d691..0000000 --- a/backend/nest-cli.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/nest-cli", - "collection": "@nestjs/schematics", - "sourceRoot": "src", - "compilerOptions": { - "plugins": ["@nestjs/swagger"] - } -} diff --git a/backend/package-lock.json b/backend/package-lock.json deleted file mode 100644 index 8fa0aaa..0000000 --- a/backend/package-lock.json +++ /dev/null @@ -1,8834 +0,0 @@ -{ - "name": "pingvin-share-backend", - "version": "0.29.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "pingvin-share-backend", - "version": "0.29.0", - "dependencies": { - "@nestjs/cache-manager": "^2.2.2", - "@nestjs/common": "^10.3.9", - "@nestjs/config": "^3.2.2", - "@nestjs/core": "^10.3.9", - "@nestjs/jwt": "^10.2.0", - "@nestjs/passport": "^10.0.3", - "@nestjs/platform-express": "^10.3.9", - "@nestjs/schedule": "^4.0.2", - "@nestjs/swagger": "^7.3.1", - "@nestjs/throttler": "^5.2.0", - "@prisma/client": "^5.16.1", - "@types/jmespath": "^0.15.2", - "@types/ldapjs": "^3.0.6", - "archiver": "^7.0.1", - "argon2": "^0.40.3", - "body-parser": "^1.20.2", - "cache-manager": "^5.6.1", - "clamscan": "^2.2.1", - "class-transformer": "^0.5.1", - "class-validator": "^0.14.1", - "content-disposition": "^0.5.4", - "cookie-parser": "^1.4.6", - "jmespath": "^0.16.0", - "ldapjs": "^3.0.7", - "mime-types": "^2.1.35", - "moment": "^2.30.1", - "nanoid": "^3.3.7", - "nodemailer": "^6.9.14", - "otplib": "^12.0.1", - "passport": "^0.7.0", - "passport-jwt": "^4.0.1", - "passport-local": "^1.0.0", - "qrcode-svg": "^1.1.0", - "reflect-metadata": "^0.2.2", - "rimraf": "^5.0.7", - "rxjs": "^7.8.1", - "sharp": "^0.33.4", - "ts-node": "^10.9.2" - }, - "devDependencies": { - "@nestjs/cli": "^10.3.2", - "@nestjs/schematics": "^10.1.1", - "@nestjs/testing": "^10.3.9", - "@types/archiver": "^6.0.2", - "@types/clamscan": "^2.0.8", - "@types/cookie-parser": "^1.4.7", - "@types/cron": "^2.0.1", - "@types/express": "^4.17.21", - "@types/mime-types": "^2.1.4", - "@types/multer": "^1.4.11", - "@types/node": "^20.14.9", - "@types/nodemailer": "^6.4.15", - "@types/passport-jwt": "^4.0.1", - "@types/qrcode-svg": "^1.1.4", - "@types/sharp": "^0.31.1", - "@types/supertest": "^6.0.2", - "@typescript-eslint/eslint-plugin": "^7.14.1", - "@typescript-eslint/parser": "^7.14.1", - "cross-env": "^7.0.3", - "eslint": "^8.56.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.1.3", - "newman": "^6.1.3", - "prettier": "^3.3.2", - "prisma": "^5.16.1", - "source-map-support": "^0.5.21", - "ts-loader": "^9.5.1", - "tsconfig-paths": "4.2.0", - "typescript": "^5.5.2", - "wait-on": "^7.2.0" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@angular-devkit/core": { - "version": "17.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.1.2.tgz", - "integrity": "sha512-ku+/W/HMCBacSWFppenr9y6Lx8mDuTuQvn1IkTyBLiJOpWnzgVbx9kHDeaDchGa1PwLlJUBBrv27t3qgJOIDPw==", - "dev": true, - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", - "picomatch": "3.0.1", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/core/node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@angular-devkit/schematics": { - "version": "17.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.1.2.tgz", - "integrity": "sha512-8S9RuM8olFN/gwN+mjbuF1CwHX61f0i59EGXz9tXLnKRUTjsRR+8vVMTAmX0dvVAT5fJTG/T69X+HX7FeumdqA==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "17.1.2", - "jsonc-parser": "3.2.0", - "magic-string": "0.30.5", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics-cli": { - "version": "17.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-17.1.2.tgz", - "integrity": "sha512-bvXykYzSST05qFdlgIzUguNOb3z0hCa8HaTwtqdmQo9aFPf+P+/AC56I64t1iTchMjQtf3JrBQhYM25gUdcGbg==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "17.1.2", - "@angular-devkit/schematics": "17.1.2", - "ansi-colors": "4.1.3", - "inquirer": "9.2.12", - "symbol-observable": "4.0.0", - "yargs-parser": "21.1.1" - }, - "bin": { - "schematics": "bin/schematics.js" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/figures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/inquirer": { - "version": "9.2.12", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.12.tgz", - "integrity": "sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==", - "dev": true, - "dependencies": { - "@ljharb/through": "^2.3.11", - "ansi-escapes": "^4.3.2", - "chalk": "^5.3.0", - "cli-cursor": "^3.1.0", - "cli-width": "^4.1.0", - "external-editor": "^3.1.0", - "figures": "^5.0.0", - "lodash": "^4.17.21", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.24.2", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", - "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", - "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.5", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", - "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@faker-js/faker": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-5.5.3.tgz", - "integrity": "sha512-R11tGE6yIFwqpaIqcfkcg7AICXzFg14+5h5v0TfF/9+RMDL6jhzCy/pxHVOfbALGdtVYdt6JdR21tuxEgl34dw==", - "dev": true - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dev": true, - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz", - "integrity": "sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.4.tgz", - "integrity": "sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", - "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "macos": ">=11", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz", - "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "macos": ">=10.13", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz", - "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz", - "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz", - "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz", - "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz", - "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz", - "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.4.tgz", - "integrity": "sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.4.tgz", - "integrity": "sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.4.tgz", - "integrity": "sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.31", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.4.tgz", - "integrity": "sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.4.tgz", - "integrity": "sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.4.tgz", - "integrity": "sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.4.tgz", - "integrity": "sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==", - "cpu": [ - "wasm32" - ], - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.1.1" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.4.tgz", - "integrity": "sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.4.tgz", - "integrity": "sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@ldapjs/asn1": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ldapjs/asn1/-/asn1-2.0.0.tgz", - "integrity": "sha512-G9+DkEOirNgdPmD0I8nu57ygQJKOOgFEMKknEuQvIHbGLwP3ny1mY+OTUYLCbCaGJP4sox5eYgBJRuSUpnAddA==", - "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", - "license": "MIT" - }, - "node_modules/@ldapjs/attribute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@ldapjs/attribute/-/attribute-1.0.0.tgz", - "integrity": "sha512-ptMl2d/5xJ0q+RgmnqOi3Zgwk/TMJYG7dYMC0Keko+yZU6n+oFM59MjQOUht5pxJeS4FWrImhu/LebX24vJNRQ==", - "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", - "license": "MIT", - "dependencies": { - "@ldapjs/asn1": "2.0.0", - "@ldapjs/protocol": "^1.2.1", - "process-warning": "^2.1.0" - } - }, - "node_modules/@ldapjs/change": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@ldapjs/change/-/change-1.0.0.tgz", - "integrity": "sha512-EOQNFH1RIku3M1s0OAJOzGfAohuFYXFY4s73wOhRm4KFGhmQQ7MChOh2YtYu9Kwgvuq1B0xKciXVzHCGkB5V+Q==", - "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", - "license": "MIT", - "dependencies": { - "@ldapjs/asn1": "2.0.0", - "@ldapjs/attribute": "1.0.0" - } - }, - "node_modules/@ldapjs/controls": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@ldapjs/controls/-/controls-2.1.0.tgz", - "integrity": "sha512-2pFdD1yRC9V9hXfAWvCCO2RRWK9OdIEcJIos/9cCVP9O4k72BY1bLDQQ4KpUoJnl4y/JoD4iFgM+YWT3IfITWw==", - "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", - "license": "MIT", - "dependencies": { - "@ldapjs/asn1": "^1.2.0", - "@ldapjs/protocol": "^1.2.1" - } - }, - "node_modules/@ldapjs/controls/node_modules/@ldapjs/asn1": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ldapjs/asn1/-/asn1-1.2.0.tgz", - "integrity": "sha512-KX/qQJ2xxzvO2/WOvr1UdQ+8P5dVvuOLk/C9b1bIkXxZss8BaR28njXdPgFCpj5aHaf1t8PmuVnea+N9YG9YMw==", - "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", - "license": "MIT" - }, - "node_modules/@ldapjs/dn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ldapjs/dn/-/dn-1.1.0.tgz", - "integrity": "sha512-R72zH5ZeBj/Fujf/yBu78YzpJjJXG46YHFo5E4W1EqfNpo1UsVPqdLrRMXeKIsJT3x9dJVIfR6OpzgINlKpi0A==", - "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", - "license": "MIT", - "dependencies": { - "@ldapjs/asn1": "2.0.0", - "process-warning": "^2.1.0" - } - }, - "node_modules/@ldapjs/filter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@ldapjs/filter/-/filter-2.1.1.tgz", - "integrity": "sha512-TwPK5eEgNdUO1ABPBUQabcZ+h9heDORE4V9WNZqCtYLKc06+6+UAJ3IAbr0L0bYTnkkWC/JEQD2F+zAFsuikNw==", - "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", - "license": "MIT", - "dependencies": { - "@ldapjs/asn1": "2.0.0", - "@ldapjs/protocol": "^1.2.1", - "process-warning": "^2.1.0" - } - }, - "node_modules/@ldapjs/messages": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ldapjs/messages/-/messages-1.3.0.tgz", - "integrity": "sha512-K7xZpXJ21bj92jS35wtRbdcNrwmxAtPwy4myeh9duy/eR3xQKvikVycbdWVzkYEAVE5Ce520VXNOwCHjomjCZw==", - "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", - "license": "MIT", - "dependencies": { - "@ldapjs/asn1": "^2.0.0", - "@ldapjs/attribute": "^1.0.0", - "@ldapjs/change": "^1.0.0", - "@ldapjs/controls": "^2.1.0", - "@ldapjs/dn": "^1.1.0", - "@ldapjs/filter": "^2.1.1", - "@ldapjs/protocol": "^1.2.1", - "process-warning": "^2.2.0" - } - }, - "node_modules/@ldapjs/protocol": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@ldapjs/protocol/-/protocol-1.2.1.tgz", - "integrity": "sha512-O89xFDLW2gBoZWNXuXpBSM32/KealKCTb3JGtJdtUQc7RjAk8XzrRgyz02cPAwGKwKPxy0ivuC7UP9bmN87egQ==", - "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", - "license": "MIT" - }, - "node_modules/@ljharb/through": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", - "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@lukeed/csprng": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", - "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@microsoft/tsdoc": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", - "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==" - }, - "node_modules/@nestjs/cache-manager": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-2.2.2.tgz", - "integrity": "sha512-+n7rpU1QABeW2WV17Dl1vZCG3vWjJU1MaamWgZvbGxYE9EeCM0lVLfw3z7acgDTNwOy+K68xuQPoIMxD0bhjlA==", - "peerDependencies": { - "@nestjs/common": "^9.0.0 || ^10.0.0", - "@nestjs/core": "^9.0.0 || ^10.0.0", - "cache-manager": "<=5", - "rxjs": "^7.0.0" - } - }, - "node_modules/@nestjs/cli": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.3.2.tgz", - "integrity": "sha512-aWmD1GLluWrbuC4a1Iz/XBk5p74Uj6nIVZj6Ov03JbTfgtWqGFLtXuMetvzMiHxfrHehx/myt2iKAPRhKdZvTg==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "17.1.2", - "@angular-devkit/schematics": "17.1.2", - "@angular-devkit/schematics-cli": "17.1.2", - "@nestjs/schematics": "^10.0.1", - "chalk": "4.1.2", - "chokidar": "3.6.0", - "cli-table3": "0.6.3", - "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "9.0.2", - "glob": "10.3.10", - "inquirer": "8.2.6", - "node-emoji": "1.11.0", - "ora": "5.4.1", - "rimraf": "4.4.1", - "shelljs": "0.8.5", - "source-map-support": "0.5.21", - "tree-kill": "1.2.2", - "tsconfig-paths": "4.2.0", - "tsconfig-paths-webpack-plugin": "4.1.0", - "typescript": "5.3.3", - "webpack": "5.90.1", - "webpack-node-externals": "3.0.0" - }, - "bin": { - "nest": "bin/nest.js" - }, - "engines": { - "node": ">= 16.14" - }, - "peerDependencies": { - "@swc/cli": "^0.1.62 || ^0.3.0", - "@swc/core": "^1.3.62" - }, - "peerDependenciesMeta": { - "@swc/cli": { - "optional": true - }, - "@swc/core": { - "optional": true - } - } - }, - "node_modules/@nestjs/cli/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@nestjs/cli/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@nestjs/cli/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@nestjs/cli/node_modules/rimraf": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", - "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", - "dev": true, - "dependencies": { - "glob": "^9.2.0" - }, - "bin": { - "rimraf": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@nestjs/cli/node_modules/rimraf/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@nestjs/cli/node_modules/rimraf/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@nestjs/cli/node_modules/rimraf/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@nestjs/cli/node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/@nestjs/common": { - "version": "10.3.9", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.3.9.tgz", - "integrity": "sha512-JAQONPagMa+sy/fcIqh/Hn3rkYQ9pQM51vXCFNOM5ujefxUVqn3gwFRMN8Y1+MxdUHipV+8daEj2jEm0IqJzOA==", - "dependencies": { - "iterare": "1.2.1", - "tslib": "2.6.2", - "uid": "2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "class-transformer": "*", - "class-validator": "*", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, - "node_modules/@nestjs/config": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.2.2.tgz", - "integrity": "sha512-vGICPOui5vE6kPz1iwQ7oCnp3qWgqxldPmBQ9onkVoKlBtyc83KJCr7CjuVtf4OdovMAVcux1d8Q6jglU2ZphA==", - "dependencies": { - "dotenv": "16.4.5", - "dotenv-expand": "10.0.0", - "lodash": "4.17.21", - "uuid": "9.0.1" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "rxjs": "^7.1.0" - } - }, - "node_modules/@nestjs/core": { - "version": "10.3.9", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.3.9.tgz", - "integrity": "sha512-NzZUfWAmaf8sqhhwoRA+CuqxQe+P4Rz8PZp5U7CdCbjyeB9ZVGcBkihcJC9wMdtiOWHRndB2J8zRfs5w06jK3w==", - "hasInstallScript": true, - "dependencies": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "path-to-regexp": "3.2.0", - "tslib": "2.6.2", - "uid": "2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^10.0.0", - "@nestjs/microservices": "^10.0.0", - "@nestjs/platform-express": "^10.0.0", - "@nestjs/websockets": "^10.0.0", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - } - } - }, - "node_modules/@nestjs/jwt": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.2.0.tgz", - "integrity": "sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==", - "dependencies": { - "@types/jsonwebtoken": "9.0.5", - "jsonwebtoken": "9.0.2" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0" - } - }, - "node_modules/@nestjs/mapped-types": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.5.tgz", - "integrity": "sha512-bSJv4pd6EY99NX9CjBIyn4TVDoSit82DUZlL4I3bqNfy5Gt+gXTa86i3I/i0iIV9P4hntcGM5GyO+FhZAhxtyg==", - "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "class-transformer": "^0.4.0 || ^0.5.0", - "class-validator": "^0.13.0 || ^0.14.0", - "reflect-metadata": "^0.1.12 || ^0.2.0" - }, - "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, - "node_modules/@nestjs/passport": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-10.0.3.tgz", - "integrity": "sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ==", - "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "passport": "^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0" - } - }, - "node_modules/@nestjs/platform-express": { - "version": "10.3.9", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.3.9.tgz", - "integrity": "sha512-si/UzobP6YUtYtCT1cSyQYHHzU3yseqYT6l7OHSMVvfG1+TqxaAqI6nmrix02LO+l1YntHRXEs3p+v9a7EfrSQ==", - "dependencies": { - "body-parser": "1.20.2", - "cors": "2.8.5", - "express": "4.19.2", - "multer": "1.4.4-lts.1", - "tslib": "2.6.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^10.0.0", - "@nestjs/core": "^10.0.0" - } - }, - "node_modules/@nestjs/platform-express/node_modules/multer": { - "version": "1.4.4-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", - "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/@nestjs/schedule": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-4.0.2.tgz", - "integrity": "sha512-po9oauE7fO0CjhDKvVC2tzEgjOUwhxYoIsXIVkgfu+xaDMmzzpmXY2s1LT4oP90Z+PaTtPoAHmhslnYmo4mSZg==", - "dependencies": { - "cron": "3.1.7", - "uuid": "9.0.1" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0" - } - }, - "node_modules/@nestjs/schematics": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.1.1.tgz", - "integrity": "sha512-o4lfCnEeIkfJhGBbLZxTuVWcGuqDCFwg5OrvpgRUBM7vI/vONvKKiB5riVNpO+JqXoH0I42NNeDb0m4V5RREig==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "17.1.2", - "@angular-devkit/schematics": "17.1.2", - "comment-json": "4.2.3", - "jsonc-parser": "3.2.1", - "pluralize": "8.0.0" - }, - "peerDependencies": { - "typescript": ">=4.8.2" - } - }, - "node_modules/@nestjs/schematics/node_modules/jsonc-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", - "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", - "dev": true - }, - "node_modules/@nestjs/swagger": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.3.1.tgz", - "integrity": "sha512-LUC4mr+5oAleEC/a2j8pNRh1S5xhKXJ1Gal5ZdRjt9XebQgbngXCdW7JTA9WOEcwGtFZN9EnKYdquzH971LZfw==", - "dependencies": { - "@microsoft/tsdoc": "^0.14.2", - "@nestjs/mapped-types": "2.0.5", - "js-yaml": "4.1.0", - "lodash": "4.17.21", - "path-to-regexp": "3.2.0", - "swagger-ui-dist": "5.11.2" - }, - "peerDependencies": { - "@fastify/static": "^6.0.0 || ^7.0.0", - "@nestjs/common": "^9.0.0 || ^10.0.0", - "@nestjs/core": "^9.0.0 || ^10.0.0", - "class-transformer": "*", - "class-validator": "*", - "reflect-metadata": "^0.1.12 || ^0.2.0" - }, - "peerDependenciesMeta": { - "@fastify/static": { - "optional": true - }, - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, - "node_modules/@nestjs/testing": { - "version": "10.3.9", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.3.9.tgz", - "integrity": "sha512-z24SdpZIRtYyM5s2vnu7rbBosXJY/KcAP7oJlwgFa/h/z/wg8gzyoKy5lhibH//OZNO+pYKajV5wczxuy5WeAg==", - "dev": true, - "dependencies": { - "tslib": "2.6.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^10.0.0", - "@nestjs/core": "^10.0.0", - "@nestjs/microservices": "^10.0.0", - "@nestjs/platform-express": "^10.0.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - } - } - }, - "node_modules/@nestjs/throttler": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/throttler/-/throttler-5.2.0.tgz", - "integrity": "sha512-G/G/MV3xf6sy1DwmnJsgeL+d2tQ/xGRNa9ZhZjm9Kyxp+3+ylGzwJtcnhWlN82PMEp3TiDQpTt+9waOIg/bpPg==", - "peerDependencies": { - "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0", - "@nestjs/core": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0", - "reflect-metadata": "^0.1.13 || ^0.2.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nuxtjs/opencollective": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", - "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", - "dependencies": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" - }, - "bin": { - "opencollective": "bin/opencollective.js" - }, - "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" - } - }, - "node_modules/@nuxtjs/opencollective/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@otplib/core": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@otplib/core/-/core-12.0.1.tgz", - "integrity": "sha512-4sGntwbA/AC+SbPhbsziRiD+jNDdIzsZ3JUyfZwjtKyc/wufl1pnSIaG4Uqx8ymPagujub0o92kgBnB89cuAMA==" - }, - "node_modules/@otplib/plugin-crypto": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@otplib/plugin-crypto/-/plugin-crypto-12.0.1.tgz", - "integrity": "sha512-qPuhN3QrT7ZZLcLCyKOSNhuijUi9G5guMRVrxq63r9YNOxxQjPm59gVxLM+7xGnHnM6cimY57tuKsjK7y9LM1g==", - "dependencies": { - "@otplib/core": "^12.0.1" - } - }, - "node_modules/@otplib/plugin-thirty-two": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@otplib/plugin-thirty-two/-/plugin-thirty-two-12.0.1.tgz", - "integrity": "sha512-MtT+uqRso909UkbrrYpJ6XFjj9D+x2Py7KjTO9JDPhL0bJUYVu5kFP4TFZW4NFAywrAtFRxOVY261u0qwb93gA==", - "dependencies": { - "@otplib/core": "^12.0.1", - "thirty-two": "^1.0.2" - } - }, - "node_modules/@otplib/preset-default": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@otplib/preset-default/-/preset-default-12.0.1.tgz", - "integrity": "sha512-xf1v9oOJRyXfluBhMdpOkr+bsE+Irt+0D5uHtvg6x1eosfmHCsCC6ej/m7FXiWqdo0+ZUI6xSKDhJwc8yfiOPQ==", - "dependencies": { - "@otplib/core": "^12.0.1", - "@otplib/plugin-crypto": "^12.0.1", - "@otplib/plugin-thirty-two": "^12.0.1" - } - }, - "node_modules/@otplib/preset-v11": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@otplib/preset-v11/-/preset-v11-12.0.1.tgz", - "integrity": "sha512-9hSetMI7ECqbFiKICrNa4w70deTUfArtwXykPUvSHWOdzOlfa9ajglu7mNCntlvxycTiOAXkQGwjQCzzDEMRMg==", - "dependencies": { - "@otplib/core": "^12.0.1", - "@otplib/plugin-crypto": "^12.0.1", - "@otplib/plugin-thirty-two": "^12.0.1" - } - }, - "node_modules/@phc/format": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@phc/format/-/format-1.0.0.tgz", - "integrity": "sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@postman/form-data": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", - "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@postman/tough-cookie": { - "version": "4.1.3-postman.1", - "resolved": "https://registry.npmjs.org/@postman/tough-cookie/-/tough-cookie-4.1.3-postman.1.tgz", - "integrity": "sha512-txpgUqZOnWYnUHZpHjkfb0IwVH4qJmyq77pPnJLlfhMtdCLMFTEeQHlzQiK906aaNCe4NEB5fGJHo9uzGbFMeA==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@postman/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/@postman/tunnel-agent": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz", - "integrity": "sha512-k57fzmAZ2PJGxfOA4SGR05ejorHbVAa/84Hxh/2nAztjNXc4ZjOm9NUIk6/Z6LCrBvJZqjRZbN8e/nROVUPVdg==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@prisma/client": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.16.1.tgz", - "integrity": "sha512-wM9SKQjF0qLxdnOZIVAIMKiz6Hu7vDt4FFAih85K1dk/Rr2mdahy6d3QP41K62N9O0DJJA//gUDA3Mp49xsKIg==", - "hasInstallScript": true, - "engines": { - "node": ">=16.13" - }, - "peerDependencies": { - "prisma": "*" - }, - "peerDependenciesMeta": { - "prisma": { - "optional": true - } - } - }, - "node_modules/@prisma/debug": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.16.1.tgz", - "integrity": "sha512-JsNgZAg6BD9RInLSrg7ZYzo11N7cVvYArq3fHGSD89HSgtN0VDdjV6bib7YddbcO6snzjchTiLfjeTqBjtArVQ==", - "devOptional": true - }, - "node_modules/@prisma/engines": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.16.1.tgz", - "integrity": "sha512-KkyF3eIUtBIyp5A/rJHCtwQO18OjpGgx18PzjyGcJDY/+vNgaVyuVd+TgwBgeq6NLdd1XMwRCI+58vinHsAdfA==", - "devOptional": true, - "hasInstallScript": true, - "dependencies": { - "@prisma/debug": "5.16.1", - "@prisma/engines-version": "5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303", - "@prisma/fetch-engine": "5.16.1", - "@prisma/get-platform": "5.16.1" - } - }, - "node_modules/@prisma/engines-version": { - "version": "5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303.tgz", - "integrity": "sha512-HkT2WbfmFZ9WUPyuJHhkiADxazHg8Y4gByrTSVeb3OikP6tjQ7txtSUGu9OBOBH0C13dPKN2qqH12xKtHu/Hiw==", - "devOptional": true - }, - "node_modules/@prisma/fetch-engine": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.16.1.tgz", - "integrity": "sha512-oOkjaPU1lhcA/Rvr4GVfd1NLJBwExgNBE36Ueq7dr71kTMwy++a3U3oLd2ZwrV9dj9xoP6LjCcky799D9nEt4w==", - "devOptional": true, - "dependencies": { - "@prisma/debug": "5.16.1", - "@prisma/engines-version": "5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303", - "@prisma/get-platform": "5.16.1" - } - }, - "node_modules/@prisma/get-platform": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.16.1.tgz", - "integrity": "sha512-R4IKnWnMkR2nUAbU5gjrPehdQYUUd7RENFD2/D+xXTNhcqczp0N+WEGQ3ViyI3+6mtVcjjNIMdnUTNyu3GxIgA==", - "devOptional": true, - "dependencies": { - "@prisma/debug": "5.16.1" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "dev": true, - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" - }, - "node_modules/@types/archiver": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-6.0.2.tgz", - "integrity": "sha512-KmROQqbQzKGuaAbmK+ZcytkJ51+YqDa7NmbXjmtC5YBLSyQYo21YaUnQ3HbaPFKL1ooo6RQ6OPYPIDyxfpDDXw==", - "dev": true, - "dependencies": { - "@types/readdir-glob": "*" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/clamscan": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/clamscan/-/clamscan-2.0.8.tgz", - "integrity": "sha512-HaOKUH+MKgGZAYakboOSHcHga1jGRgD4kpUUslceKtsOqDY16yCLHcURETSF7jOokJOR/Z0k2wk0RL+pN0cbUg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cookie-parser": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.7.tgz", - "integrity": "sha512-Fvuyi354Z+uayxzIGCwYTayFKocfV7TuDYZClCdIP9ckhvAu/ixDtCB6qx2TT0FKjPLf1f3P/J1rgf6lPs64mw==", - "dev": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/cookiejar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", - "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", - "dev": true - }, - "node_modules/@types/cron": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/cron/-/cron-2.0.1.tgz", - "integrity": "sha512-WHa/1rtNtD2Q/H0+YTTZoty+/5rcE66iAFX2IY+JuUoOACsevYyFkSYu/2vdw+G5LrmO7Lxowrqm0av4k3qWNQ==", - "dev": true, - "dependencies": { - "@types/luxon": "*", - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", - "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.33", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", - "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/jmespath": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@types/jmespath/-/jmespath-0.15.2.tgz", - "integrity": "sha512-pegh49FtNsC389Flyo9y8AfkVIZn9MMPE9yJrO9svhq6Fks2MwymULWjZqySuxmctd3ZH4/n7Mr98D+1Qo5vGA==", - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true - }, - "node_modules/@types/jsonwebtoken": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz", - "integrity": "sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ldapjs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/ldapjs/-/ldapjs-3.0.6.tgz", - "integrity": "sha512-E2Tn1ltJDYBsidOT9QG4engaQeQzRQ9aYNxVmjCkD33F7cIeLPgrRDXAYs0O35mK2YDU20c/+ZkNjeAPRGLM0Q==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/luxon": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz", - "integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==" - }, - "node_modules/@types/methods": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", - "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "node_modules/@types/mime-types": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", - "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", - "dev": true - }, - "node_modules/@types/multer": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.11.tgz", - "integrity": "sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w==", - "dev": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/nodemailer": { - "version": "6.4.15", - "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.15.tgz", - "integrity": "sha512-0EBJxawVNjPkng1zm2vopRctuWVCxk34JcIlRuXSf54habUWdz1FB7wHDqOqvDa8Mtpt0Q3LTXQkAs2LNyK5jQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/passport": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@types/passport/-/passport-1.0.11.tgz", - "integrity": "sha512-pz1cx9ptZvozyGKKKIPLcVDVHwae4hrH5d6g5J+DkMRRjR3cVETb4jMabhXAUbg3Ov7T22nFHEgaK2jj+5CBpw==", - "dev": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/passport-jwt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/passport-jwt/-/passport-jwt-4.0.1.tgz", - "integrity": "sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ==", - "dev": true, - "dependencies": { - "@types/jsonwebtoken": "*", - "@types/passport-strategy": "*" - } - }, - "node_modules/@types/passport-strategy": { - "version": "0.2.35", - "resolved": "https://registry.npmjs.org/@types/passport-strategy/-/passport-strategy-0.2.35.tgz", - "integrity": "sha512-o5D19Jy2XPFoX2rKApykY15et3Apgax00RRLf0RUotPDUsYrQa7x4howLYr9El2mlUApHmCMv5CZ1IXqKFQ2+g==", - "dev": true, - "dependencies": { - "@types/express": "*", - "@types/passport": "*" - } - }, - "node_modules/@types/qrcode-svg": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@types/qrcode-svg/-/qrcode-svg-1.1.4.tgz", - "integrity": "sha512-gh+atEBHXpU5iO72Tg4q03YdGKoY0zH1Yr4mGl+NSzFpyPuJcgurs8F3aRpH0Gs93GFuB1rDoQj6U4Xshn72PA==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/readdir-glob": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.1.tgz", - "integrity": "sha512-ImM6TmoF8bgOwvehGviEj3tRdRBbQujr1N+0ypaln/GWjaerOB26jb93vsRHmdMtvVQZQebOlqt2HROark87mQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/sharp": { - "version": "0.31.1", - "resolved": "https://registry.npmjs.org/@types/sharp/-/sharp-0.31.1.tgz", - "integrity": "sha512-5nWwamN9ZFHXaYEincMSuza8nNfOof8nmO+mcI+Agx1uMUk4/pQnNIcix+9rLPXzKrm1pS34+6WRDbDV0Jn7ag==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/superagent": { - "version": "8.1.7", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.7.tgz", - "integrity": "sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww==", - "dev": true, - "dependencies": { - "@types/cookiejar": "^2.1.5", - "@types/methods": "^1.1.4", - "@types/node": "*" - } - }, - "node_modules/@types/supertest": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.2.tgz", - "integrity": "sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg==", - "dev": true, - "dependencies": { - "@types/methods": "^1.1.4", - "@types/superagent": "^8.1.0" - } - }, - "node_modules/@types/validator": { - "version": "13.11.10", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.10.tgz", - "integrity": "sha512-e2PNXoXLr6Z+dbfx5zSh9TRlXJrELycxiaXznp4S5+D2M3b9bqJEitNHA5923jhnB2zzFiZHa2f0SI1HoIahpg==" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz", - "integrity": "sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/type-utils": "7.14.1", - "@typescript-eslint/utils": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz", - "integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz", - "integrity": "sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/utils": "7.14.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz", - "integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz", - "integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz", - "integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz", - "integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.14.1", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/abstract-logging": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", - "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==", - "license": "MIT" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - }, - "node_modules/archiver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", - "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", - "dependencies": { - "archiver-utils": "^5.0.2", - "async": "^3.2.4", - "buffer-crc32": "^1.0.0", - "readable-stream": "^4.0.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^3.0.0", - "zip-stream": "^6.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/archiver-utils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", - "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", - "dependencies": { - "glob": "^10.0.0", - "graceful-fs": "^4.2.0", - "is-stream": "^2.0.1", - "lazystream": "^1.0.0", - "lodash": "^4.17.15", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/archiver-utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/archiver-utils/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/archiver-utils/node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/archiver-utils/node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/archiver-utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/archiver-utils/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/archiver/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/archiver/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/archiver/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, - "node_modules/argon2": { - "version": "0.40.3", - "resolved": "https://registry.npmjs.org/argon2/-/argon2-0.40.3.tgz", - "integrity": "sha512-FrSmz4VeM91jwFvvjsQv9GYp6o/kARWoYKjbjDB2U5io1H3e5X67PYGclFDeQff6UXIhUd4aHR3mxCdBbMMuQw==", - "hasInstallScript": true, - "dependencies": { - "@phc/format": "^1.0.0", - "node-addon-api": "^8.0.0", - "node-gyp-build": "^4.8.0" - }, - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/array-timsort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", - "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.0.tgz", - "integrity": "sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==", - "dev": true - }, - "node_modules/b4a": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" - }, - "node_modules/backoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", - "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", - "license": "MIT", - "dependencies": { - "precond": "0.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/bare-events": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", - "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", - "optional": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bluebird": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", - "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brotli": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", - "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", - "dev": true, - "dependencies": { - "base64-js": "^1.1.2" - } - }, - "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cache-manager": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-5.6.1.tgz", - "integrity": "sha512-9uTQmLPaTKpvO38RXOm54jfPyrcXR+51NzNdba+Jaydnz8v5l/YEA6l/MsSSeAvF6s43+K4wojIGJC9i6cLfJg==", - "dependencies": { - "eventemitter3": "^5.0.1", - "lodash.clonedeep": "^4.5.0", - "lru-cache": "^10.2.2", - "promise-coalesce": "^1.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/cache-manager/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" - }, - "node_modules/cache-manager/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001620", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", - "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/charset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz", - "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clamscan": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/clamscan/-/clamscan-2.2.1.tgz", - "integrity": "sha512-ureXxucH9MfkhyR4nsJMWPnwq/mKlSYHB5RtkuqWltgSF06kET/C36iAeJuGiGXIWc1bi1FMMoptysHLkIRA/g==", - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/class-transformer": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", - "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" - }, - "node_modules/class-validator": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.1.tgz", - "integrity": "sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==", - "dependencies": { - "@types/validator": "^13.11.8", - "libphonenumber-js": "^1.10.53", - "validator": "^13.9.0" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-progress": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", - "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", - "dev": true, - "dependencies": { - "string-width": "^4.2.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", - "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/comment-json": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", - "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", - "dev": true, - "dependencies": { - "array-timsort": "^1.0.3", - "core-util-is": "^1.0.3", - "esprima": "^4.0.1", - "has-own-prop": "^2.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/compress-commons": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", - "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", - "dependencies": { - "crc-32": "^1.2.0", - "crc32-stream": "^6.0.0", - "is-stream": "^2.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/compress-commons/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/compress-commons/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/compress-commons/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-parser": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", - "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", - "dependencies": { - "cookie": "0.4.1", - "cookie-signature": "1.0.6" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/cookie-parser/node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", - "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/crc32-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/crc32-stream/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, - "node_modules/cron": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/cron/-/cron-3.1.7.tgz", - "integrity": "sha512-tlBg7ARsAMQLzgwqVxy8AZl/qlTc5nibqYwtNGoCrd+cV+ugI+tvZC1oT/8dFH8W455YrywGykx/KMmAqOr7Jw==", - "dependencies": { - "@types/luxon": "~3.4.0", - "luxon": "~3.4.0" - } - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/csv-parse": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", - "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", - "dev": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dotenv-expand": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", - "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", - "engines": { - "node": ">=12" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.773", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.773.tgz", - "integrity": "sha512-87eHF+h3PlCRwbxVEAw9KtK3v7lWfc/sUDr0W76955AdYTG4bV/k0zrl585Qnj/skRMH2qOSiE+kqMeOQ+LOpw==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@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.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "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.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": "*", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "node_modules/fastq": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", - "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/filesize": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.2.tgz", - "integrity": "sha512-Dx770ai81ohflojxhU+oG+Z2QGvKdYxgEr9OSA8UVrqhwNHjfH9A8f5NKfg83fEH8ZFA5N5llJo5T3PIoZ4CRA==", - "dev": true, - "engines": { - "node": ">= 10.4.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.0.2.tgz", - "integrity": "sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^8.2.0", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, - "engines": { - "node": ">=12.13.0", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "typescript": ">3.6.0", - "webpack": "^5.11.0" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", - "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/har-validator/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/har-validator/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-own-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", - "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-reasons": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/http-reasons/-/http-reasons-0.1.0.tgz", - "integrity": "sha512-P6kYh0lKZ+y29T2Gqz+RlC9WBLhKe8kDmcJ+A+611jFfxdPsbMRQ5aNmFRM3lENqFkK+HTTL+tlQviAiv0AbLQ==", - "dev": true - }, - "node_modules/http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/httpntlm": { - "version": "1.8.13", - "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.8.13.tgz", - "integrity": "sha512-2F2FDPiWT4rewPzNMg3uPhNkP3NExENlUGADRUDPQvuftuUTGW98nLZtGemCIW3G40VhWZYgkIDcQFAwZ3mf2Q==", - "dev": true, - "funding": [ - { - "type": "paypal", - "url": "https://www.paypal.com/donate/?hosted_button_id=2CKNJLZJBW8ZC" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/samdecrock" - } - ], - "dependencies": { - "des.js": "^1.0.1", - "httpreq": ">=0.4.22", - "js-md4": "^0.3.2", - "underscore": "~1.12.1" - }, - "engines": { - "node": ">=10.4.0" - } - }, - "node_modules/httpreq": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-1.1.1.tgz", - "integrity": "sha512-uhSZLPPD2VXXOSN8Cni3kIsoFHaU2pT/nySEU/fHr/ePbqHYr0jeiQRmUKLEirC09SFPsdMoA7LU7UXMd/w0Kw==", - "dev": true, - "engines": { - "node": ">= 6.15.1" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "node_modules/iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jmespath": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", - "license": "Apache-2.0", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/joi": { - "version": "17.11.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", - "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", - "dev": true, - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/jose": { - "version": "4.14.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", - "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "node_modules/js-md4": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", - "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", - "dev": true - }, - "node_modules/js-sha512": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.9.0.tgz", - "integrity": "sha512-mirki9WS/SUahm+1TbAPkqvbCiCfOAAsyXeHxK1UkullnJVVqoJG2pL9ObvT05CN+tM7fxhfYm0NbXn+1hWoZg==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/ldapjs": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-3.0.7.tgz", - "integrity": "sha512-1ky+WrN+4CFMuoekUOv7Y1037XWdjKpu0xAPwSP+9KdvmV9PG+qOKlssDV6a+U32apwxdD3is/BZcWOYzN30cg==", - "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", - "license": "MIT", - "dependencies": { - "@ldapjs/asn1": "^2.0.0", - "@ldapjs/attribute": "^1.0.0", - "@ldapjs/change": "^1.0.0", - "@ldapjs/controls": "^2.1.0", - "@ldapjs/dn": "^1.1.0", - "@ldapjs/filter": "^2.1.1", - "@ldapjs/messages": "^1.3.0", - "@ldapjs/protocol": "^1.2.1", - "abstract-logging": "^2.0.1", - "assert-plus": "^1.0.0", - "backoff": "^2.5.0", - "once": "^1.4.0", - "vasync": "^2.2.1", - "verror": "^1.10.1" - } - }, - "node_modules/ldapjs/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "license": "MIT" - }, - "node_modules/ldapjs/node_modules/verror": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", - "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/libphonenumber-js": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.1.tgz", - "integrity": "sha512-Wze1LPwcnzvcKGcRHFGFECTaLzxOtujwpf924difr5zniyYv1C2PiW0419qDR7m8lKDxsImu5mwxFuXhXpjmvw==" - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/liquid-json": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/liquid-json/-/liquid-json-0.3.1.tgz", - "integrity": "sha512-wUayTU8MS827Dam6MxgD72Ui+KOSF+u/eIqpatOtjnvgJ0+mnDq33uC2M7J0tPK+upe/DpUAuK4JUU89iBoNKQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/luxon": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", - "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "dev": true, - "dependencies": { - "fs-monkey": "^1.0.4" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-format": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mime-format/-/mime-format-2.0.1.tgz", - "integrity": "sha512-XxU3ngPbEnrYnNbIX+lYSaYg0M01v6p2ntd2YaFksTu0vayaw5OJvbdRyWs07EYRlLED5qadUZ+xo+XhOvFhwg==", - "dev": true, - "dependencies": { - "charset": "^1.0.0" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/newman": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/newman/-/newman-6.1.3.tgz", - "integrity": "sha512-Zv+BjkJsYwSwc4oE3o40W6enBZRS7a7OL3aB8c4e46tDvg4HCOh6EhsmQmYhSMmlYF2JBieYiqS7XUwWkY6PiQ==", - "dev": true, - "dependencies": { - "@postman/tough-cookie": "4.1.3-postman.1", - "async": "3.2.5", - "chardet": "2.0.0", - "cli-progress": "3.12.0", - "cli-table3": "0.6.5", - "colors": "1.4.0", - "commander": "11.1.0", - "csv-parse": "4.16.3", - "filesize": "10.1.2", - "liquid-json": "0.3.1", - "lodash": "4.17.21", - "mkdirp": "3.0.1", - "postman-collection": "4.4.0", - "postman-collection-transformer": "4.1.8", - "postman-request": "2.88.1-postman.33", - "postman-runtime": "7.39.0", - "pretty-ms": "7.0.1", - "semver": "7.6.2", - "serialised-error": "1.1.3", - "word-wrap": "1.2.5", - "xmlbuilder": "15.1.1" - }, - "bin": { - "newman": "bin/newman.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/newman/node_modules/chardet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.0.0.tgz", - "integrity": "sha512-xVgPpulCooDjY6zH4m9YW3jbkaBe3FKIAvF5sj5t7aBNsVl2ljIE+xwJ4iNgiDZHFQvNIpjdKdVOQvvk5ZfxbQ==", - "dev": true - }, - "node_modules/newman/node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/newman/node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/newman/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "dev": true, - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", - "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.0.0.tgz", - "integrity": "sha512-ipO7rsHEBqa9STO5C5T10fj732ml+5kLN1cAG8/jdHd56ldQeGj3Q7+scUS+VHK/qy1zLEwC4wMK5+yM0btPvw==", - "engines": { - "node": "^18 || ^20 || >= 21" - } - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", - "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-oauth1": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-oauth1/-/node-oauth1-1.3.0.tgz", - "integrity": "sha512-0yggixNfrA1KcBwvh/Hy2xAS1Wfs9dcg6TdFf2zN7gilcAigMdrtZ4ybrBSXBgLvGDw9V1p2MRnGBMq7XjTWLg==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/nodemailer": { - "version": "6.9.14", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.14.tgz", - "integrity": "sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/otplib": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/otplib/-/otplib-12.0.1.tgz", - "integrity": "sha512-xDGvUOQjop7RDgxTQ+o4pOol0/3xSZzawTiPKRrHnQWAy0WjhNs/5HdIDJCrqC4MBynmjXgULc6YfioaxZeFgg==", - "dependencies": { - "@otplib/core": "^12.0.1", - "@otplib/preset-default": "^12.0.1", - "@otplib/preset-v11": "^12.0.1" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/passport": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz", - "integrity": "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==", - "dependencies": { - "passport-strategy": "1.x.x", - "pause": "0.0.1", - "utils-merge": "^1.0.1" - }, - "engines": { - "node": ">= 0.4.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jaredhanson" - } - }, - "node_modules/passport-jwt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz", - "integrity": "sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==", - "dependencies": { - "jsonwebtoken": "^9.0.0", - "passport-strategy": "^1.0.0" - } - }, - "node_modules/passport-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", - "integrity": "sha512-9wCE6qKznvf9mQYYbgJ3sVOHmCWoUNMVFoZzNoznmISbhnNNPhN9xfY3sLmScHMetEJeoY7CXwfhCe7argfQow==", - "dependencies": { - "passport-strategy": "1.x.x" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/passport-strategy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pause": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/postman-collection": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.4.0.tgz", - "integrity": "sha512-2BGDFcUwlK08CqZFUlIC8kwRJueVzPjZnnokWPtJCd9f2J06HBQpGL7t2P1Ud1NEsK9NHq9wdipUhWLOPj5s/Q==", - "dev": true, - "dependencies": { - "@faker-js/faker": "5.5.3", - "file-type": "3.9.0", - "http-reasons": "0.1.0", - "iconv-lite": "0.6.3", - "liquid-json": "0.3.1", - "lodash": "4.17.21", - "mime-format": "2.0.1", - "mime-types": "2.1.35", - "postman-url-encoder": "3.0.5", - "semver": "7.5.4", - "uuid": "8.3.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-collection-transformer": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/postman-collection-transformer/-/postman-collection-transformer-4.1.8.tgz", - "integrity": "sha512-smJ6X7Z7kbg6hp7JZPFixrSN3J3WkQed7DrWCC5tF7IxOMpFLqhtTtGssY8nD1inP8+mJf+N72Pf2ttUAHgBKw==", - "dev": true, - "dependencies": { - "commander": "8.3.0", - "inherits": "2.0.4", - "lodash": "4.17.21", - "semver": "7.5.4", - "strip-json-comments": "3.1.1" - }, - "bin": { - "postman-collection-transformer": "bin/transform-collection.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-collection-transformer/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/postman-collection-transformer/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-collection/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postman-collection/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-collection/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/postman-request": { - "version": "2.88.1-postman.33", - "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.33.tgz", - "integrity": "sha512-uL9sCML4gPH6Z4hreDWbeinKU0p0Ke261nU7OvII95NU22HN6Dk7T/SaVPaj6T4TsQqGKIFw6/woLZnH7ugFNA==", - "dev": true, - "dependencies": { - "@postman/form-data": "~3.1.1", - "@postman/tough-cookie": "~4.1.3-postman.1", - "@postman/tunnel-agent": "^0.6.3", - "aws-sign2": "~0.7.0", - "aws4": "^1.12.0", - "brotli": "^1.3.3", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "har-validator": "~5.1.3", - "http-signature": "~1.3.1", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "^2.1.35", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.3", - "safe-buffer": "^5.1.2", - "stream-length": "^1.0.2", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postman-request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/postman-request/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/postman-runtime": { - "version": "7.39.0", - "resolved": "https://registry.npmjs.org/postman-runtime/-/postman-runtime-7.39.0.tgz", - "integrity": "sha512-FMfHHdbBlCB7hno8AHWEfVItVHk+/NaV3NeedVMNEtLnTeNTjKtDZ29LMmIikW4O+mmToh2l46qYH2iw72TtEQ==", - "dev": true, - "dependencies": { - "@postman/tough-cookie": "4.1.3-postman.1", - "async": "3.2.5", - "aws4": "1.12.0", - "handlebars": "4.7.8", - "httpntlm": "1.8.13", - "jose": "4.14.4", - "js-sha512": "0.9.0", - "lodash": "4.17.21", - "mime-types": "2.1.35", - "node-forge": "1.3.1", - "node-oauth1": "1.3.0", - "performance-now": "2.1.0", - "postman-collection": "4.4.0", - "postman-request": "2.88.1-postman.33", - "postman-sandbox": "4.7.1", - "postman-url-encoder": "3.0.5", - "serialised-error": "1.1.3", - "strip-json-comments": "3.1.1", - "uuid": "8.3.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/postman-runtime/node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true - }, - "node_modules/postman-runtime/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/postman-sandbox": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.7.1.tgz", - "integrity": "sha512-H2wYSLK0mB588IaxoLrLoPbpmxsIcwFtgaK2c8gAsAQ+TgYFePwb4qdeVcYDMqmwrLd77/ViXkjasP/sBMz1sQ==", - "dev": true, - "dependencies": { - "lodash": "4.17.21", - "postman-collection": "4.4.0", - "teleport-javascript": "1.0.0", - "uvm": "2.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-url-encoder": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postman-url-encoder/-/postman-url-encoder-3.0.5.tgz", - "integrity": "sha512-jOrdVvzUXBC7C+9gkIkpDJ3HIxOHTIqjpQ4C1EMt1ZGeMvSEpbFCKq23DEfgsj46vMnDgyQf+1ZLp2Wm+bKSsA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/precond": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", - "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "dev": true, - "dependencies": { - "parse-ms": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prisma": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.16.1.tgz", - "integrity": "sha512-Z1Uqodk44diztImxALgJJfNl2Uisl9xDRvqybMKEBYJLNKNhDfAHf+ZIJbZyYiBhLMbKU9cYGdDVG5IIXEnL2Q==", - "devOptional": true, - "hasInstallScript": true, - "dependencies": { - "@prisma/engines": "5.16.1" - }, - "bin": { - "prisma": "build/index.js" - }, - "engines": { - "node": ">=16.13" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/process-warning": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.3.2.tgz", - "integrity": "sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==", - "license": "MIT" - }, - "node_modules/promise-coalesce": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/promise-coalesce/-/promise-coalesce-1.1.2.tgz", - "integrity": "sha512-zLaJ9b8hnC564fnJH6NFSOGZYYdzrAJn2JUUIwzoQb32fG2QAakpDNM+CZo1km6keXkRXRM+hml1BFAPVnPkxg==", - "engines": { - "node": ">=16" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qrcode-svg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/qrcode-svg/-/qrcode-svg-1.1.0.tgz", - "integrity": "sha512-XyQCIXux1zEIA3NPb0AeR8UMYvXZzWEhgdBgBjH9gO7M48H9uoHzviNz8pXw3UzrAcxRRRn9gxHewAVK7bn9qw==", - "bin": { - "qrcode-svg": "bin/qrcode-svg.js" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/readdir-glob": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", - "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/reflect-metadata": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", - "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "10.3.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", - "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serialised-error": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/serialised-error/-/serialised-error-1.1.3.tgz", - "integrity": "sha512-vybp3GItaR1ZtO2nxZZo8eOo7fnVaNtP3XE2vJKgzkKR2bagCkdJ1EpYYhEMd3qu/80DwQk9KjsNSxE3fXWq0g==", - "dev": true, - "dependencies": { - "object-hash": "^1.1.2", - "stack-trace": "0.0.9", - "uuid": "^3.0.0" - } - }, - "node_modules/serialised-error/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/sharp": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.4.tgz", - "integrity": "sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.6.0" - }, - "engines": { - "libvips": ">=8.15.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.4", - "@img/sharp-darwin-x64": "0.33.4", - "@img/sharp-libvips-darwin-arm64": "1.0.2", - "@img/sharp-libvips-darwin-x64": "1.0.2", - "@img/sharp-libvips-linux-arm": "1.0.2", - "@img/sharp-libvips-linux-arm64": "1.0.2", - "@img/sharp-libvips-linux-s390x": "1.0.2", - "@img/sharp-libvips-linux-x64": "1.0.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", - "@img/sharp-libvips-linuxmusl-x64": "1.0.2", - "@img/sharp-linux-arm": "0.33.4", - "@img/sharp-linux-arm64": "0.33.4", - "@img/sharp-linux-s390x": "0.33.4", - "@img/sharp-linux-x64": "0.33.4", - "@img/sharp-linuxmusl-arm64": "0.33.4", - "@img/sharp-linuxmusl-x64": "0.33.4", - "@img/sharp-wasm32": "0.33.4", - "@img/sharp-win32-ia32": "0.33.4", - "@img/sharp-win32-x64": "0.33.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sshpk": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", - "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stack-trace": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "integrity": "sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz", - "integrity": "sha512-aI+qKFiwoDV4rsXiS7WRoCt+v2RX1nUj17+KJC5r2gfh5xoSJIfP6Y3Do/HtvesFcTSWthIuJ3l1cvKQY/+nZg==", - "dev": true, - "dependencies": { - "bluebird": "^2.6.2" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/streamx": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz", - "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==", - "dependencies": { - "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/swagger-ui-dist": { - "version": "5.11.2", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.11.2.tgz", - "integrity": "sha512-jQG0cRgJNMZ7aCoiFofnoojeSaa/+KgWaDlfgs8QN+BXoGMpxeMVY5OEnjq4OlNvF3yjftO8c9GRAgcHlO+u7A==" - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/synckit": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", - "dev": true, - "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/teleport-javascript": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/teleport-javascript/-/teleport-javascript-1.0.0.tgz", - "integrity": "sha512-j1llvWVFyEn/6XIFDfX5LAU43DXe0GCt3NfXDwJ8XpRRMkS+i50SAkonAONBy+vxwPFBd50MFU8a2uj8R/ccLg==", - "dev": true - }, - "node_modules/terser": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", - "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/text-decoder": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz", - "integrity": "sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/thirty-two": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz", - "integrity": "sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==", - "engines": { - "node": ">=0.2.6" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", - "dev": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/ts-loader": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", - "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", - "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "node_modules/typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/uglify-js": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz", - "integrity": "sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uid": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", - "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", - "dependencies": { - "@lukeed/csprng": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", - "dev": true - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/uvm": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/uvm/-/uvm-2.1.1.tgz", - "integrity": "sha512-BZ5w8adTpNNr+zczOBRpaX/hH8UPKAf7fmCnidrcsqt3bn8KT9bDIfuS7hgRU9RXgiN01su2pwysBONY6w8W5w==", - "dev": true, - "dependencies": { - "flatted": "3.2.6" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/uvm/node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", - "dev": true - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - }, - "node_modules/validator": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", - "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vasync": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vasync/-/vasync-2.2.1.tgz", - "integrity": "sha512-Hq72JaTpcTFdWiNA4Y22Amej2GH3BFmBaKPPlDZ4/oC8HNn2ISHLkFrJU4Ds8R3jcUi7oo5Y9jcMHKjES+N9wQ==", - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "verror": "1.10.0" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "node_modules/wait-on": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", - "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", - "dev": true, - "dependencies": { - "axios": "^1.6.1", - "joi": "^17.11.0", - "lodash": "^4.17.21", - "minimist": "^1.2.8", - "rxjs": "^7.8.1" - }, - "bin": { - "wait-on": "bin/wait-on" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/wait-on/node_modules/axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/webpack": { - "version": "5.90.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.1.tgz", - "integrity": "sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-node-externals": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", - "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "dev": true, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zip-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", - "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", - "dependencies": { - "archiver-utils": "^5.0.0", - "compress-commons": "^6.0.2", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/zip-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/zip-stream/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/zip-stream/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - } - } -} diff --git a/backend/package.json b/backend/package.json deleted file mode 100644 index 3fbfb96..0000000 --- a/backend/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "name": "pingvin-share-backend", - "version": "0.29.0", - "scripts": { - "build": "nest build", - "dev": "cross-env NODE_ENV=development nest start --watch", - "prod": "prisma migrate deploy && prisma db seed && node dist/src/main", - "lint": "eslint 'src/**/*.ts'", - "format": "prettier --end-of-line=auto --write 'src/**/*.ts'", - "test:system": "prisma migrate reset -f && nest start & wait-on http://localhost:8080/api/configs && newman run ./test/newman-system-tests.json" - }, - "prisma": { - "seed": "ts-node prisma/seed/config.seed.ts" - }, - "dependencies": { - "@nestjs/cache-manager": "^2.2.2", - "@nestjs/common": "^10.3.9", - "@nestjs/config": "^3.2.2", - "@nestjs/core": "^10.3.9", - "@nestjs/jwt": "^10.2.0", - "@nestjs/passport": "^10.0.3", - "@nestjs/platform-express": "^10.3.9", - "@nestjs/schedule": "^4.0.2", - "@nestjs/swagger": "^7.3.1", - "@nestjs/throttler": "^5.2.0", - "@prisma/client": "^5.16.1", - "@types/jmespath": "^0.15.2", - "@types/ldapjs": "^3.0.6", - "archiver": "^7.0.1", - "argon2": "^0.40.3", - "body-parser": "^1.20.2", - "cache-manager": "^5.6.1", - "clamscan": "^2.2.1", - "class-transformer": "^0.5.1", - "class-validator": "^0.14.1", - "content-disposition": "^0.5.4", - "cookie-parser": "^1.4.6", - "jmespath": "^0.16.0", - "ldapjs": "^3.0.7", - "mime-types": "^2.1.35", - "moment": "^2.30.1", - "nanoid": "^3.3.7", - "nodemailer": "^6.9.14", - "otplib": "^12.0.1", - "passport": "^0.7.0", - "passport-jwt": "^4.0.1", - "passport-local": "^1.0.0", - "qrcode-svg": "^1.1.0", - "reflect-metadata": "^0.2.2", - "rimraf": "^5.0.7", - "rxjs": "^7.8.1", - "sharp": "^0.33.4", - "ts-node": "^10.9.2" - }, - "devDependencies": { - "@nestjs/cli": "^10.3.2", - "@nestjs/schematics": "^10.1.1", - "@nestjs/testing": "^10.3.9", - "@types/archiver": "^6.0.2", - "@types/clamscan": "^2.0.8", - "@types/cookie-parser": "^1.4.7", - "@types/cron": "^2.0.1", - "@types/express": "^4.17.21", - "@types/mime-types": "^2.1.4", - "@types/multer": "^1.4.11", - "@types/node": "^20.14.9", - "@types/nodemailer": "^6.4.15", - "@types/passport-jwt": "^4.0.1", - "@types/qrcode-svg": "^1.1.4", - "@types/sharp": "^0.31.1", - "@types/supertest": "^6.0.2", - "@typescript-eslint/eslint-plugin": "^7.14.1", - "@typescript-eslint/parser": "^7.14.1", - "cross-env": "^7.0.3", - "eslint": "^8.56.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.1.3", - "newman": "^6.1.3", - "prettier": "^3.3.2", - "prisma": "^5.16.1", - "source-map-support": "^0.5.21", - "ts-loader": "^9.5.1", - "tsconfig-paths": "4.2.0", - "typescript": "^5.5.2", - "wait-on": "^7.2.0" - } -} diff --git a/backend/prisma/.env b/backend/prisma/.env deleted file mode 100644 index cecaf52..0000000 --- a/backend/prisma/.env +++ /dev/null @@ -1,2 +0,0 @@ -#This file is only used to set a default value for the database url -DATABASE_URL="file:../data/pingvin-share.db" \ No newline at end of file diff --git a/backend/prisma/migrations/20221011172612_init/migration.sql b/backend/prisma/migrations/20221011172612_init/migration.sql deleted file mode 100644 index 243ea29..0000000 --- a/backend/prisma/migrations/20221011172612_init/migration.sql +++ /dev/null @@ -1,57 +0,0 @@ --- CreateTable -CREATE TABLE "User" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - "email" TEXT NOT NULL, - "password" TEXT NOT NULL, - "firstName" TEXT, - "lastName" TEXT -); - --- CreateTable -CREATE TABLE "RefreshToken" ( - "token" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "expiresAt" DATETIME NOT NULL, - "userId" TEXT NOT NULL, - CONSTRAINT "RefreshToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE -); - --- CreateTable -CREATE TABLE "Share" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "uploadLocked" BOOLEAN NOT NULL DEFAULT false, - "isZipReady" BOOLEAN NOT NULL DEFAULT false, - "views" INTEGER NOT NULL DEFAULT 0, - "expiration" DATETIME NOT NULL, - "creatorId" TEXT NOT NULL, - CONSTRAINT "Share_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE -); - --- CreateTable -CREATE TABLE "File" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "name" TEXT NOT NULL, - "size" TEXT NOT NULL, - "shareId" TEXT NOT NULL, - CONSTRAINT "File_shareId_fkey" FOREIGN KEY ("shareId") REFERENCES "Share" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- CreateTable -CREATE TABLE "ShareSecurity" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "password" TEXT, - "maxViews" INTEGER, - "shareId" TEXT, - CONSTRAINT "ShareSecurity_shareId_fkey" FOREIGN KEY ("shareId") REFERENCES "Share" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- CreateIndex -CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); - --- CreateIndex -CREATE UNIQUE INDEX "ShareSecurity_shareId_key" ON "ShareSecurity"("shareId"); diff --git a/backend/prisma/migrations/20221013212615_cascade_delete_on_share/migration.sql b/backend/prisma/migrations/20221013212615_cascade_delete_on_share/migration.sql deleted file mode 100644 index 1ca00d6..0000000 --- a/backend/prisma/migrations/20221013212615_cascade_delete_on_share/migration.sql +++ /dev/null @@ -1,14 +0,0 @@ --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_RefreshToken" ( - "token" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "expiresAt" DATETIME NOT NULL, - "userId" TEXT NOT NULL, - CONSTRAINT "RefreshToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); -INSERT INTO "new_RefreshToken" ("createdAt", "expiresAt", "token", "userId") SELECT "createdAt", "expiresAt", "token", "userId" FROM "RefreshToken"; -DROP TABLE "RefreshToken"; -ALTER TABLE "new_RefreshToken" RENAME TO "RefreshToken"; -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; diff --git a/backend/prisma/migrations/20221018123139_make_creator_optional/migration.sql b/backend/prisma/migrations/20221018123139_make_creator_optional/migration.sql deleted file mode 100644 index 1a16039..0000000 --- a/backend/prisma/migrations/20221018123139_make_creator_optional/migration.sql +++ /dev/null @@ -1,17 +0,0 @@ --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_Share" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "uploadLocked" BOOLEAN NOT NULL DEFAULT false, - "isZipReady" BOOLEAN NOT NULL DEFAULT false, - "views" INTEGER NOT NULL DEFAULT 0, - "expiration" DATETIME NOT NULL, - "creatorId" TEXT, - CONSTRAINT "Share_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE -); -INSERT INTO "new_Share" ("createdAt", "creatorId", "expiration", "id", "isZipReady", "uploadLocked", "views") SELECT "createdAt", "creatorId", "expiration", "id", "isZipReady", "uploadLocked", "views" FROM "Share"; -DROP TABLE "Share"; -ALTER TABLE "new_Share" RENAME TO "Share"; -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; diff --git a/backend/prisma/migrations/20221113221005_share_recipient/migration.sql b/backend/prisma/migrations/20221113221005_share_recipient/migration.sql deleted file mode 100644 index 482a562..0000000 --- a/backend/prisma/migrations/20221113221005_share_recipient/migration.sql +++ /dev/null @@ -1,25 +0,0 @@ --- CreateTable -CREATE TABLE "ShareRecipient" ( - "id" TEXT NOT NULL PRIMARY KEY, - "email" TEXT NOT NULL, - "shareId" TEXT NOT NULL, - CONSTRAINT "ShareRecipient_shareId_fkey" FOREIGN KEY ("shareId") REFERENCES "Share" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_Share" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "uploadLocked" BOOLEAN NOT NULL DEFAULT false, - "isZipReady" BOOLEAN NOT NULL DEFAULT false, - "views" INTEGER NOT NULL DEFAULT 0, - "expiration" DATETIME NOT NULL, - "creatorId" TEXT, - CONSTRAINT "Share_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); -INSERT INTO "new_Share" ("createdAt", "creatorId", "expiration", "id", "isZipReady", "uploadLocked", "views") SELECT "createdAt", "creatorId", "expiration", "id", "isZipReady", "uploadLocked", "views" FROM "Share"; -DROP TABLE "Share"; -ALTER TABLE "new_Share" RENAME TO "Share"; -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; diff --git a/backend/prisma/migrations/20221201220540_config_and_admin_functionalities/migration.sql b/backend/prisma/migrations/20221201220540_config_and_admin_functionalities/migration.sql deleted file mode 100644 index d6578d4..0000000 --- a/backend/prisma/migrations/20221201220540_config_and_admin_functionalities/migration.sql +++ /dev/null @@ -1,37 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `firstName` on the `User` table. All the data in the column will be lost. - - You are about to drop the column `lastName` on the `User` table. All the data in the column will be lost. - - Added the required column `username` to the `User` table without a default value. This is not possible if the table is not empty. - -*/ --- CreateTable -CREATE TABLE "Config" ( - "updatedAt" DATETIME NOT NULL, - "key" TEXT NOT NULL PRIMARY KEY, - "type" TEXT NOT NULL, - "value" TEXT NOT NULL, - "description" TEXT NOT NULL, - "secret" BOOLEAN NOT NULL DEFAULT true, - "locked" BOOLEAN NOT NULL DEFAULT false -); - --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_User" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - "username" TEXT NOT NULL, - "email" TEXT NOT NULL, - "password" TEXT NOT NULL, - "isAdmin" BOOLEAN NOT NULL DEFAULT false -); -INSERT INTO "new_User" ("createdAt", "email", "id", "password", "updatedAt", "username") SELECT "createdAt", "email", "id", "password", "updatedAt", 'user-' || User.id as "username" FROM "User"; -DROP TABLE "User"; -ALTER TABLE "new_User" RENAME TO "User"; -CREATE UNIQUE INDEX "User_username_key" ON "User"("username"); -CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; diff --git a/backend/prisma/migrations/20221208191607_v0_3_3/migration.sql b/backend/prisma/migrations/20221208191607_v0_3_3/migration.sql deleted file mode 100644 index 5740bf8..0000000 --- a/backend/prisma/migrations/20221208191607_v0_3_3/migration.sql +++ /dev/null @@ -1,17 +0,0 @@ --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_Config" ( - "updatedAt" DATETIME NOT NULL, - "key" TEXT NOT NULL PRIMARY KEY, - "type" TEXT NOT NULL, - "value" TEXT NOT NULL, - "description" TEXT NOT NULL, - "obscured" BOOLEAN NOT NULL DEFAULT false, - "secret" BOOLEAN NOT NULL DEFAULT true, - "locked" BOOLEAN NOT NULL DEFAULT false -); -INSERT INTO "new_Config" ("description", "key", "locked", "secret", "type", "updatedAt", "value") SELECT "description", "key", "locked", "secret", "type", "updatedAt", "value" FROM "Config"; -DROP TABLE "Config"; -ALTER TABLE "new_Config" RENAME TO "Config"; -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; diff --git a/backend/prisma/migrations/20221213173854_v0_3_6/migration.sql b/backend/prisma/migrations/20221213173854_v0_3_6/migration.sql deleted file mode 100644 index 4c193a4..0000000 --- a/backend/prisma/migrations/20221213173854_v0_3_6/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Share" ADD COLUMN "description" TEXT; diff --git a/backend/prisma/migrations/20221219061131_user_entity/migration.sql b/backend/prisma/migrations/20221219061131_user_entity/migration.sql deleted file mode 100644 index fe3e439..0000000 --- a/backend/prisma/migrations/20221219061131_user_entity/migration.sql +++ /dev/null @@ -1,31 +0,0 @@ --- CreateTable -CREATE TABLE "LoginToken" ( - "token" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "expiresAt" DATETIME NOT NULL, - "userId" TEXT NOT NULL, - "used" BOOLEAN NOT NULL DEFAULT false, - CONSTRAINT "LoginToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_User" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - "username" TEXT NOT NULL, - "email" TEXT NOT NULL, - "password" TEXT NOT NULL, - "isAdmin" BOOLEAN NOT NULL DEFAULT false, - "totpEnabled" BOOLEAN NOT NULL DEFAULT false, - "totpVerified" BOOLEAN NOT NULL DEFAULT false, - "totpSecret" TEXT -); -INSERT INTO "new_User" ("createdAt", "email", "id", "isAdmin", "password", "updatedAt", "username") SELECT "createdAt", "email", "id", "isAdmin", "password", "updatedAt", "username" FROM "User"; -DROP TABLE "User"; -ALTER TABLE "new_User" RENAME TO "User"; -CREATE UNIQUE INDEX "User_username_key" ON "User"("username"); -CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; diff --git a/backend/prisma/migrations/20221230120407_category_attribute_config/migration.sql b/backend/prisma/migrations/20221230120407_category_attribute_config/migration.sql deleted file mode 100644 index 74856d7..0000000 --- a/backend/prisma/migrations/20221230120407_category_attribute_config/migration.sql +++ /dev/null @@ -1,56 +0,0 @@ -/* - Warnings: - - - Added the required column `category` to the `Config` table without a default value. This is not possible if the table is not empty. - -*/ --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_Config" ( - "updatedAt" DATETIME NOT NULL, - "key" TEXT NOT NULL PRIMARY KEY, - "type" TEXT NOT NULL, - "value" TEXT NOT NULL, - "description" TEXT NOT NULL, - "category" TEXT, - "obscured" BOOLEAN NOT NULL DEFAULT false, - "secret" BOOLEAN NOT NULL DEFAULT true, - "locked" BOOLEAN NOT NULL DEFAULT false -); -INSERT INTO "new_Config" ("description", "key", "locked", "obscured", "secret", "type", "updatedAt", "value") SELECT "description", "key", "locked", "obscured", "secret", "type", "updatedAt", "value" FROM "Config"; -DROP TABLE "Config"; -ALTER TABLE "new_Config" RENAME TO "Config"; - - UPDATE config SET category = "internal" WHERE key = "SETUP_FINISHED"; - UPDATE config SET category = "internal" WHERE key = "TOTP_SECRET"; - UPDATE config SET category = "internal" WHERE key = "JWT_SECRET"; - UPDATE config SET category = "general" WHERE key = "APP_URL"; - UPDATE config SET category = "general" WHERE key = "SHOW_HOME_PAGE"; - UPDATE config SET category = "share" WHERE key = "ALLOW_REGISTRATION"; - UPDATE config SET category = "share" WHERE key = "ALLOW_UNAUTHENTICATED_SHARES"; - UPDATE config SET category = "share" WHERE key = "MAX_FILE_SIZE"; - UPDATE config SET category = "email" WHERE key = "ENABLE_EMAIL_RECIPIENTS"; - UPDATE config SET category = "email" WHERE key = "EMAIL_MESSAGE"; - UPDATE config SET category = "email" WHERE key = "EMAIL_SUBJECT"; - UPDATE config SET category = "email" WHERE key = "SMTP_HOST"; - UPDATE config SET category = "email" WHERE key = "SMTP_PORT"; - UPDATE config SET category = "email" WHERE key = "SMTP_EMAIL"; - UPDATE config SET category = "email" WHERE key = "SMTP_USERNAME"; - UPDATE config SET category = "email" WHERE key = "SMTP_PASSWORD"; - -CREATE TABLE "new_Config" ( - "updatedAt" DATETIME NOT NULL, - "key" TEXT NOT NULL PRIMARY KEY, - "type" TEXT NOT NULL, - "value" TEXT NOT NULL, - "description" TEXT NOT NULL, - "category" TEXT NOT NULL, - "obscured" BOOLEAN NOT NULL DEFAULT false, - "secret" BOOLEAN NOT NULL DEFAULT true, - "locked" BOOLEAN NOT NULL DEFAULT false -); -INSERT INTO "new_Config" ("description", "key", "locked", "obscured", "secret", "type", "updatedAt", "value", "category") SELECT "description", "key", "locked", "obscured", "secret", "type", "updatedAt", "value", "category" FROM "Config"; -DROP TABLE "Config"; -ALTER TABLE "new_Config" RENAME TO "Config"; -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; \ No newline at end of file diff --git a/backend/prisma/migrations/20230104145733_v0_5_1/migration.sql b/backend/prisma/migrations/20230104145733_v0_5_1/migration.sql deleted file mode 100644 index d5e7dd4..0000000 --- a/backend/prisma/migrations/20230104145733_v0_5_1/migration.sql +++ /dev/null @@ -1,21 +0,0 @@ -/* - Warnings: - - - The primary key for the `RefreshToken` table will be changed. If it partially fails, the table could be left without primary key constraint. - - The required column `id` was added to the `RefreshToken` table with a prisma-level default value. This is not possible if the table is not empty. Please add this column as optional, then populate it before making it required. - -*/ --- RedefineTables -PRAGMA foreign_keys=OFF; -DROP TABLE "RefreshToken"; -CREATE TABLE "RefreshToken" ( - "id" TEXT NOT NULL PRIMARY KEY, - "token" TEXT NOT NULL, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "expiresAt" DATETIME NOT NULL, - "userId" TEXT NOT NULL, - CONSTRAINT "RefreshToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); -CREATE UNIQUE INDEX "RefreshToken_token_key" ON "RefreshToken"("token"); -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; diff --git a/backend/prisma/migrations/20230113080918_removed_reason_attribute/migration.sql b/backend/prisma/migrations/20230113080918_removed_reason_attribute/migration.sql deleted file mode 100644 index eff9ec8..0000000 --- a/backend/prisma/migrations/20230113080918_removed_reason_attribute/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Share" ADD COLUMN "removedReason" TEXT; diff --git a/backend/prisma/migrations/20230126125501_reverse_shares/migration.sql b/backend/prisma/migrations/20230126125501_reverse_shares/migration.sql deleted file mode 100644 index 74f162c..0000000 --- a/backend/prisma/migrations/20230126125501_reverse_shares/migration.sql +++ /dev/null @@ -1,67 +0,0 @@ -/* - Warnings: - - - Added the required column `order` to the `Config` table without a default value. This is not possible if the table is not empty. - -*/ --- CreateTable -CREATE TABLE "ReverseShare" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "token" TEXT NOT NULL, - "shareExpiration" DATETIME NOT NULL, - "maxShareSize" TEXT NOT NULL, - "sendEmailNotification" BOOLEAN NOT NULL, - "used" BOOLEAN NOT NULL DEFAULT false, - "creatorId" TEXT NOT NULL, - "shareId" TEXT, - CONSTRAINT "ReverseShare_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT "ReverseShare_shareId_fkey" FOREIGN KEY ("shareId") REFERENCES "Share" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_Config" ( - "updatedAt" DATETIME NOT NULL, - "key" TEXT NOT NULL PRIMARY KEY, - "type" TEXT NOT NULL, - "value" TEXT NOT NULL, - "description" TEXT NOT NULL, - "category" TEXT NOT NULL, - "obscured" BOOLEAN NOT NULL DEFAULT false, - "secret" BOOLEAN NOT NULL DEFAULT true, - "locked" BOOLEAN NOT NULL DEFAULT false, - "order" INTEGER NOT NULL -); -INSERT INTO "new_Config" ("category", "description", "key", "locked", "obscured", "secret", "type", "updatedAt", "value", "order") SELECT "category", "description", "key", "locked", "obscured", "secret", "type", "updatedAt", "value", 0 FROM "Config"; -DROP TABLE "Config"; -ALTER TABLE "new_Config" RENAME TO "Config"; -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; - --- CreateIndex -CREATE UNIQUE INDEX "ReverseShare_token_key" ON "ReverseShare"("token"); - --- CreateIndex -CREATE UNIQUE INDEX "ReverseShare_shareId_key" ON "ReverseShare"("shareId"); - --- Custom migration -UPDATE Config SET `order` = 0 WHERE key = "JWT_SECRET"; -UPDATE Config SET `order` = 0 WHERE key = "TOTP_SECRET"; - -UPDATE Config SET `order` = 1 WHERE key = "APP_URL"; -UPDATE Config SET `order` = 2 WHERE key = "SHOW_HOME_PAGE"; -UPDATE Config SET `order` = 3 WHERE key = "ALLOW_REGISTRATION"; -UPDATE Config SET `order` = 4 WHERE key = "ALLOW_UNAUTHENTICATED_SHARES"; -UPDATE Config SET `order` = 5 WHERE key = "MAX_SHARE_SIZE"; -UPDATE Config SET `order` = 6, key = "ENABLE_SHARE_EMAIL_RECIPIENTS" WHERE key = "ENABLE_EMAIL_RECIPIENTS"; -UPDATE Config SET `order` = 7, key = "SHARE_RECEPIENTS_EMAIL_MESSAGE" WHERE key = "EMAIL_MESSAGE"; -UPDATE Config SET `order` = 8, key = "SHARE_RECEPIENTS_EMAIL_SUBJECT" WHERE key = "EMAIL_SUBJECT"; -UPDATE Config SET `order` = 12 WHERE key = "SMTP_HOST"; -UPDATE Config SET `order` = 13 WHERE key = "SMTP_PORT"; -UPDATE Config SET `order` = 14 WHERE key = "SMTP_EMAIL"; -UPDATE Config SET `order` = 15 WHERE key = "SMTP_USERNAME"; -UPDATE Config SET `order` = 16 WHERE key = "SMTP_PASSWORD"; - -INSERT INTO Config (`order`, `key`, `description`, `type`, `value`, `category`, `secret`, `updatedAt`) VALUES (11, "SMTP_ENABLED", "Whether SMTP is enabled. Only set this to true if you entered the host, port, email, user and password of your SMTP server.", "boolean", IFNULL((SELECT value FROM Config WHERE key="ENABLE_SHARE_EMAIL_RECIPIENTS"), "false"), "smtp", 0, strftime('%s', 'now')); -INSERT INTO Config (`order`, `key`, `description`, `type`, `value`, `category`, `secret`, `updatedAt`, `locked`) VALUES (0, "SETUP_STATUS", "Status of the setup wizard", "string", IIF((SELECT value FROM Config WHERE key="SETUP_FINISHED") == "true", "FINISHED", "STARTED"), "internal", 0, strftime('%s', 'now'), 1); \ No newline at end of file diff --git a/backend/prisma/migrations/20230209205230_v0_10_0/migration.sql b/backend/prisma/migrations/20230209205230_v0_10_0/migration.sql deleted file mode 100644 index 1ac3a69..0000000 --- a/backend/prisma/migrations/20230209205230_v0_10_0/migration.sql +++ /dev/null @@ -1,64 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `shareId` on the `ReverseShare` table. All the data in the column will be lost. - - You are about to drop the column `used` on the `ReverseShare` table. All the data in the column will be lost. - - Added the required column `remainingUses` to the `ReverseShare` table without a default value. This is not possible if the table is not empty. - -*/ --- CreateTable -PRAGMA foreign_keys=OFF; -CREATE TABLE "ResetPasswordToken" ( - "token" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "expiresAt" DATETIME NOT NULL, - "userId" TEXT NOT NULL, - CONSTRAINT "ResetPasswordToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- Disable TOTP as secret isn't encrypted anymore -UPDATE User SET totpEnabled=false, totpSecret=null, totpVerified=false WHERE totpSecret IS NOT NULL; - --- RedefineTables -CREATE TABLE "new_Share" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "uploadLocked" BOOLEAN NOT NULL DEFAULT false, - "isZipReady" BOOLEAN NOT NULL DEFAULT false, - "views" INTEGER NOT NULL DEFAULT 0, - "expiration" DATETIME NOT NULL, - "description" TEXT, - "removedReason" TEXT, - "creatorId" TEXT, - "reverseShareId" TEXT, - CONSTRAINT "Share_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT "Share_reverseShareId_fkey" FOREIGN KEY ("reverseShareId") REFERENCES "ReverseShare" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - -INSERT INTO "new_Share" ("createdAt", "creatorId", "description", "expiration", "id", "isZipReady", "removedReason", "uploadLocked", "views", "reverseShareId") -SELECT "createdAt", "creatorId", "description", "expiration", "id", "isZipReady", "removedReason", "uploadLocked", "views", (SELECT id FROM ReverseShare WHERE shareId=Share.id) -FROM "Share"; - - -DROP TABLE "Share"; -ALTER TABLE "new_Share" RENAME TO "Share"; -CREATE TABLE "new_ReverseShare" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "token" TEXT NOT NULL, - "shareExpiration" DATETIME NOT NULL, - "maxShareSize" TEXT NOT NULL, - "sendEmailNotification" BOOLEAN NOT NULL, - "remainingUses" INTEGER NOT NULL, - "creatorId" TEXT NOT NULL, - CONSTRAINT "ReverseShare_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); -INSERT INTO "new_ReverseShare" ("createdAt", "creatorId", "id", "maxShareSize", "sendEmailNotification", "shareExpiration", "token", "remainingUses") SELECT "createdAt", "creatorId", "id", "maxShareSize", "sendEmailNotification", "shareExpiration", "token", iif("ReverseShare".used, 0, 1) FROM "ReverseShare"; -DROP TABLE "ReverseShare"; -ALTER TABLE "new_ReverseShare" RENAME TO "ReverseShare"; -CREATE UNIQUE INDEX "ReverseShare_token_key" ON "ReverseShare"("token"); -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; - --- CreateIndex -CREATE UNIQUE INDEX "ResetPasswordToken_userId_key" ON "ResetPasswordToken"("userId"); diff --git a/backend/prisma/migrations/20230303091601_v0_11_0/migration.sql b/backend/prisma/migrations/20230303091601_v0_11_0/migration.sql deleted file mode 100644 index e326a0a..0000000 --- a/backend/prisma/migrations/20230303091601_v0_11_0/migration.sql +++ /dev/null @@ -1,94 +0,0 @@ -/* - Warnings: - - - The primary key for the `Config` table will be changed. If it partially fails, the table could be left without primary key constraint. - - You are about to drop the column `key` on the `Config` table. All the data in the column will be lost. - - Added the required column `name` to the `Config` table without a default value. This is not possible if the table is not empty. - -*/ - --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_Config" ( - "updatedAt" DATETIME NOT NULL, - "name" TEXT NOT NULL, - "category" TEXT NOT NULL, - "type" TEXT NOT NULL, - "value" TEXT NOT NULL, - "description" TEXT NOT NULL, - "obscured" BOOLEAN NOT NULL DEFAULT false, - "secret" BOOLEAN NOT NULL DEFAULT true, - "locked" BOOLEAN NOT NULL DEFAULT false, - "order" INTEGER NOT NULL, - - PRIMARY KEY ("name", "category") -); --- INSERT INTO "new_Config" ("category", "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") SELECT "category", "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value" FROM "Config"; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'internal', 'jwtSecret', "description", "locked", "obscured", 0, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'JWT_SECRET'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'general', 'appUrl', "description", "locked", "obscured", 1, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'APP_URL'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'general', 'showHomePage', "description", "locked", "obscured", 2, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'SHOW_HOME_PAGE'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'share', 'allowRegistration', "description", "locked", "obscured", 0, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'ALLOW_REGISTRATION'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'share', 'allowUnauthenticatedShares', "description", "locked", "obscured", 1, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'ALLOW_UNAUTHENTICATED_SHARES'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'share', 'maxSize', "description", "locked", "obscured", 1, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'MAX_SHARE_SIZE'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'email', 'enableShareEmailRecipients', "description", "locked", "obscured", 1, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'ENABLE_SHARE_EMAIL_RECIPIENTS'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'email', 'shareRecipientsSubject', "description", "locked", "obscured", 2, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'SHARE_RECEPIENTS_EMAIL_SUBJECT'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'email', 'shareRecipientsMessage', "description", "locked", "obscured", 3, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'SHARE_RECEPIENTS_EMAIL_MESSAGE'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'email', 'reverseShareSubject', "description", "locked", "obscured", 4, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'REVERSE_SHARE_EMAIL_SUBJECT'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'email', 'reverseShareMessage', "description", "locked", "obscured", 5, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'REVERSE_SHARE_EMAIL_MESSAGE'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'email', 'resetPasswordSubject', "description", "locked", "obscured", 6, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'RESET_PASSWORD_EMAIL_SUBJECT'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'email', 'resetPasswordMessage', "description", "locked", "obscured", 1, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'RESET_PASSWORD_EMAIL_MESSAGE'; - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'smtp', 'enabled', "description", "locked", "obscured", 1, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'SMTP_ENABLED'; - - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'smtp', 'host', "description", "locked", "obscured", 1, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'SMTP_HOST'; - - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'smtp', 'port', "description", "locked", "obscured", 1, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'SMTP_PORT'; - - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'smtp', 'email', "description", "locked", "obscured", 1, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'SMTP_EMAIL'; - - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'smtp', 'username', "description", "locked", "obscured", 1, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'SMTP_USERNAME'; - - -INSERT INTO new_Config ("category", "name" , "description", "locked", "obscured", "order", "secret", "type", "updatedAt", "value") -SELECT 'smtp', 'password', "description", "locked", "obscured", 1, "secret", "type", "updatedAt", "value" FROM Config WHERE key = 'SMTP_PASSWORD'; - - -DROP TABLE "Config"; -ALTER TABLE "new_Config" RENAME TO "Config"; -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; diff --git a/backend/prisma/migrations/20230319120712_edited_value/migration.sql b/backend/prisma/migrations/20230319120712_edited_value/migration.sql deleted file mode 100644 index be6542e..0000000 --- a/backend/prisma/migrations/20230319120712_edited_value/migration.sql +++ /dev/null @@ -1,23 +0,0 @@ --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_Config" ( - "updatedAt" DATETIME NOT NULL, - "name" TEXT NOT NULL, - "category" TEXT NOT NULL, - "type" TEXT NOT NULL, - "value" TEXT, - "defaultValue" TEXT NOT NULL DEFAULT '', - "description" TEXT NOT NULL, - "obscured" BOOLEAN NOT NULL DEFAULT false, - "secret" BOOLEAN NOT NULL DEFAULT true, - "locked" BOOLEAN NOT NULL DEFAULT false, - "order" INTEGER NOT NULL, - - PRIMARY KEY ("name", "category") -); -INSERT INTO "new_Config" ("category", "description", "locked", "name", "obscured", "order", "secret", "type", "updatedAt", "value") SELECT "category", "description", "locked", "name", "obscured", "order", "secret", "type", "updatedAt", "value" FROM "Config"; -DROP TABLE "Config"; -ALTER TABLE "new_Config" RENAME TO "Config"; - -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; \ No newline at end of file diff --git a/backend/prisma/migrations/20230718155819_remove_config_veriable_description/migration.sql b/backend/prisma/migrations/20230718155819_remove_config_veriable_description/migration.sql deleted file mode 100644 index ba98e39..0000000 --- a/backend/prisma/migrations/20230718155819_remove_config_veriable_description/migration.sql +++ /dev/null @@ -1,27 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `description` on the `Config` table. All the data in the column will be lost. - -*/ --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_Config" ( - "updatedAt" DATETIME NOT NULL, - "name" TEXT NOT NULL, - "category" TEXT NOT NULL, - "type" TEXT NOT NULL, - "defaultValue" TEXT NOT NULL DEFAULT '', - "value" TEXT, - "obscured" BOOLEAN NOT NULL DEFAULT false, - "secret" BOOLEAN NOT NULL DEFAULT true, - "locked" BOOLEAN NOT NULL DEFAULT false, - "order" INTEGER NOT NULL, - - PRIMARY KEY ("name", "category") -); -INSERT INTO "new_Config" ("category", "defaultValue", "locked", "name", "obscured", "order", "secret", "type", "updatedAt", "value") SELECT "category", "defaultValue", "locked", "name", "obscured", "order", "secret", "type", "updatedAt", "value" FROM "Config"; -DROP TABLE "Config"; -ALTER TABLE "new_Config" RENAME TO "Config"; -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; diff --git a/backend/prisma/migrations/20231021165436_oauth/migration.sql b/backend/prisma/migrations/20231021165436_oauth/migration.sql deleted file mode 100644 index 4887b72..0000000 --- a/backend/prisma/migrations/20231021165436_oauth/migration.sql +++ /dev/null @@ -1,31 +0,0 @@ --- CreateTable -CREATE TABLE "OAuthUser" ( - "id" TEXT NOT NULL PRIMARY KEY, - "provider" TEXT NOT NULL, - "providerUserId" TEXT NOT NULL, - "providerUsername" TEXT NOT NULL, - "userId" TEXT NOT NULL, - CONSTRAINT "OAuthUser_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_User" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - "username" TEXT NOT NULL, - "email" TEXT NOT NULL, - "password" TEXT, - "isAdmin" BOOLEAN NOT NULL DEFAULT false, - "totpEnabled" BOOLEAN NOT NULL DEFAULT false, - "totpVerified" BOOLEAN NOT NULL DEFAULT false, - "totpSecret" TEXT -); -INSERT INTO "new_User" ("createdAt", "email", "id", "isAdmin", "password", "totpEnabled", "totpSecret", "totpVerified", "updatedAt", "username") SELECT "createdAt", "email", "id", "isAdmin", "password", "totpEnabled", "totpSecret", "totpVerified", "updatedAt", "username" FROM "User"; -DROP TABLE "User"; -ALTER TABLE "new_User" RENAME TO "User"; -CREATE UNIQUE INDEX "User_username_key" ON "User"("username"); -CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; diff --git a/backend/prisma/migrations/20240501154254_share_name_property/migration.sql b/backend/prisma/migrations/20240501154254_share_name_property/migration.sql deleted file mode 100644 index 2b47009..0000000 --- a/backend/prisma/migrations/20240501154254_share_name_property/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Share" ADD COLUMN "name" TEXT; diff --git a/backend/prisma/migrations/20240609145325_add_simplied_field_for_reverse_share/migration.sql b/backend/prisma/migrations/20240609145325_add_simplied_field_for_reverse_share/migration.sql deleted file mode 100644 index 81a6b65..0000000 --- a/backend/prisma/migrations/20240609145325_add_simplied_field_for_reverse_share/migration.sql +++ /dev/null @@ -1,20 +0,0 @@ --- RedefineTables -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_ReverseShare" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "token" TEXT NOT NULL, - "shareExpiration" DATETIME NOT NULL, - "maxShareSize" TEXT NOT NULL, - "sendEmailNotification" BOOLEAN NOT NULL, - "remainingUses" INTEGER NOT NULL, - "simplified" BOOLEAN NOT NULL DEFAULT false, - "creatorId" TEXT NOT NULL, - CONSTRAINT "ReverseShare_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); -INSERT INTO "new_ReverseShare" ("createdAt", "creatorId", "id", "maxShareSize", "remainingUses", "sendEmailNotification", "shareExpiration", "token") SELECT "createdAt", "creatorId", "id", "maxShareSize", "remainingUses", "sendEmailNotification", "shareExpiration", "token" FROM "ReverseShare"; -DROP TABLE "ReverseShare"; -ALTER TABLE "new_ReverseShare" RENAME TO "ReverseShare"; -CREATE UNIQUE INDEX "ReverseShare_token_key" ON "ReverseShare"("token"); -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON; diff --git a/backend/prisma/migrations/20240725141038_add_public_access_field_for_reverse_share/migration.sql b/backend/prisma/migrations/20240725141038_add_public_access_field_for_reverse_share/migration.sql deleted file mode 100644 index e19c87c..0000000 --- a/backend/prisma/migrations/20240725141038_add_public_access_field_for_reverse_share/migration.sql +++ /dev/null @@ -1,22 +0,0 @@ --- RedefineTables -PRAGMA defer_foreign_keys=ON; -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_ReverseShare" ( - "id" TEXT NOT NULL PRIMARY KEY, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "token" TEXT NOT NULL, - "shareExpiration" DATETIME NOT NULL, - "maxShareSize" TEXT NOT NULL, - "sendEmailNotification" BOOLEAN NOT NULL, - "remainingUses" INTEGER NOT NULL, - "simplified" BOOLEAN NOT NULL DEFAULT false, - "publicAccess" BOOLEAN NOT NULL DEFAULT true, - "creatorId" TEXT NOT NULL, - CONSTRAINT "ReverseShare_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); -INSERT INTO "new_ReverseShare" ("createdAt", "creatorId", "id", "maxShareSize", "remainingUses", "sendEmailNotification", "shareExpiration", "simplified", "token") SELECT "createdAt", "creatorId", "id", "maxShareSize", "remainingUses", "sendEmailNotification", "shareExpiration", "simplified", "token" FROM "ReverseShare"; -DROP TABLE "ReverseShare"; -ALTER TABLE "new_ReverseShare" RENAME TO "ReverseShare"; -CREATE UNIQUE INDEX "ReverseShare_token_key" ON "ReverseShare"("token"); -PRAGMA foreign_keys=ON; -PRAGMA defer_foreign_keys=OFF; diff --git a/backend/prisma/migrations/20240803232708_ldap_support/migration.sql b/backend/prisma/migrations/20240803232708_ldap_support/migration.sql deleted file mode 100644 index c3920a5..0000000 --- a/backend/prisma/migrations/20240803232708_ldap_support/migration.sql +++ /dev/null @@ -1,11 +0,0 @@ -/* - Warnings: - - - A unique constraint covering the columns `[ldapDN]` on the table `User` will be added. If there are existing duplicate values, this will fail. - -*/ --- AlterTable -ALTER TABLE "User" ADD COLUMN "ldapDN" TEXT; - --- CreateIndex -CREATE UNIQUE INDEX "User_ldapDN_key" ON "User"("ldapDN"); diff --git a/backend/prisma/migrations/migration_lock.toml b/backend/prisma/migrations/migration_lock.toml deleted file mode 100644 index e5e5c47..0000000 --- a/backend/prisma/migrations/migration_lock.toml +++ /dev/null @@ -1,3 +0,0 @@ -# Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) -provider = "sqlite" \ No newline at end of file diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma deleted file mode 100644 index c8c9c49..0000000 --- a/backend/prisma/schema.prisma +++ /dev/null @@ -1,160 +0,0 @@ -generator client { - provider = "prisma-client-js" -} - -datasource db { - provider = "sqlite" - url = env("DATABASE_URL") -} - -model User { - id String @id @default(uuid()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - username String @unique - email String @unique - password String? - isAdmin Boolean @default(false) - ldapDN String? @unique - - shares Share[] - refreshTokens RefreshToken[] - loginTokens LoginToken[] - reverseShares ReverseShare[] - - totpEnabled Boolean @default(false) - totpVerified Boolean @default(false) - totpSecret String? - resetPasswordToken ResetPasswordToken? - - oAuthUsers OAuthUser[] -} - -model RefreshToken { - id String @id @default(uuid()) - token String @unique @default(uuid()) - createdAt DateTime @default(now()) - - expiresAt DateTime - - userId String - user User @relation(fields: [userId], references: [id], onDelete: Cascade) -} - -model LoginToken { - token String @id @default(uuid()) - createdAt DateTime @default(now()) - - expiresAt DateTime - - userId String - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - used Boolean @default(false) -} - -model ResetPasswordToken { - token String @id @default(uuid()) - createdAt DateTime @default(now()) - - expiresAt DateTime - - userId String @unique - user User @relation(fields: [userId], references: [id], onDelete: Cascade) -} - -model OAuthUser { - id String @id @default(uuid()) - provider String - providerUserId String - providerUsername String - userId String - user User @relation(fields: [userId], references: [id], onDelete: Cascade) -} - -model Share { - id String @id @default(uuid()) - createdAt DateTime @default(now()) - - name String? - uploadLocked Boolean @default(false) - isZipReady Boolean @default(false) - views Int @default(0) - expiration DateTime - description String? - removedReason String? - - creatorId String? - creator User? @relation(fields: [creatorId], references: [id], onDelete: Cascade) - - reverseShareId String? - reverseShare ReverseShare? @relation(fields: [reverseShareId], references: [id], onDelete: Cascade) - - security ShareSecurity? - recipients ShareRecipient[] - files File[] -} - -model ReverseShare { - id String @id @default(uuid()) - createdAt DateTime @default(now()) - - token String @unique @default(uuid()) - shareExpiration DateTime - maxShareSize String - sendEmailNotification Boolean - remainingUses Int - simplified Boolean @default(false) - publicAccess Boolean @default(true) - - creatorId String - creator User @relation(fields: [creatorId], references: [id], onDelete: Cascade) - - shares Share[] -} - -model ShareRecipient { - id String @id @default(uuid()) - email String - - shareId String - share Share @relation(fields: [shareId], references: [id], onDelete: Cascade) -} - -model File { - id String @id @default(uuid()) - createdAt DateTime @default(now()) - - name String - size String - - shareId String - share Share @relation(fields: [shareId], references: [id], onDelete: Cascade) -} - -model ShareSecurity { - id String @id @default(uuid()) - createdAt DateTime @default(now()) - - password String? - maxViews Int? - - shareId String? @unique - share Share? @relation(fields: [shareId], references: [id], onDelete: Cascade) -} - -model Config { - updatedAt DateTime @updatedAt - - name String - category String - type String - defaultValue String @default("") - value String? - obscured Boolean @default(false) - secret Boolean @default(true) - locked Boolean @default(false) - order Int - - @@id([name, category]) -} diff --git a/backend/prisma/seed/config.seed.ts b/backend/prisma/seed/config.seed.ts deleted file mode 100644 index a88f4ef..0000000 --- a/backend/prisma/seed/config.seed.ts +++ /dev/null @@ -1,395 +0,0 @@ -import { Prisma, PrismaClient } from "@prisma/client"; -import * as crypto from "crypto"; - -const configVariables: ConfigVariables = { - internal: { - jwtSecret: { - type: "string", - value: crypto.randomBytes(256).toString("base64"), - locked: true, - }, - }, - general: { - appName: { - type: "string", - defaultValue: "Pingvin Share", - secret: false, - }, - appUrl: { - type: "string", - defaultValue: "http://localhost:3000", - secret: false, - }, - showHomePage: { - type: "boolean", - defaultValue: "true", - secret: false, - }, - sessionDuration: { - type: "number", - defaultValue: "2160", - secret: false, - }, - }, - share: { - allowRegistration: { - type: "boolean", - defaultValue: "true", - secret: false, - }, - allowUnauthenticatedShares: { - type: "boolean", - defaultValue: "false", - secret: false, - }, - maxExpiration: { - type: "number", - defaultValue: "0", - secret: false, - }, - maxSize: { - type: "number", - defaultValue: "1000000000", - secret: false, - }, - zipCompressionLevel: { - type: "number", - defaultValue: "9", - }, - chunkSize: { - type: "number", - defaultValue: "10000000", - secret: false, - }, - autoOpenShareModal: { - type: "boolean", - defaultValue: "false", - secret: false, - }, - }, - email: { - enableShareEmailRecipients: { - type: "boolean", - defaultValue: "false", - secret: false, - }, - shareRecipientsSubject: { - type: "string", - defaultValue: "Files shared with you", - }, - shareRecipientsMessage: { - type: "text", - defaultValue: - "Hey!\n\n{creator} shared some files with you, view or download the files with this link: {shareUrl}\n\nThe share will expire {expires}.\n\nNote: {desc}\n\nShared securely with Pingvin Share 🐧", - }, - reverseShareSubject: { - type: "string", - defaultValue: "Reverse share link used", - }, - reverseShareMessage: { - type: "text", - defaultValue: - "Hey!\n\nA share was just created with your reverse share link: {shareUrl}\n\nShared securely with Pingvin Share 🐧", - }, - resetPasswordSubject: { - type: "string", - defaultValue: "Pingvin Share password reset", - }, - resetPasswordMessage: { - type: "text", - defaultValue: - "Hey!\n\nYou requested a password reset. Click this link to reset your password: {url}\nThe link expires in a hour.\n\nPingvin Share 🐧", - }, - inviteSubject: { - type: "string", - defaultValue: "Pingvin Share invite", - }, - inviteMessage: { - type: "text", - defaultValue: - "Hey!\n\nYou were invited to Pingvin Share. Click this link to accept the invite: {url}\n\nYour password is: {password}\n\nPingvin Share 🐧", - }, - }, - smtp: { - enabled: { - type: "boolean", - defaultValue: "false", - secret: false, - }, - allowUnauthorizedCertificates: { - type: "boolean", - defaultValue: "false", - - secret: false, - }, - host: { - type: "string", - defaultValue: "", - }, - port: { - type: "number", - defaultValue: "0", - }, - email: { - type: "string", - defaultValue: "", - }, - username: { - type: "string", - defaultValue: "", - }, - password: { - type: "string", - defaultValue: "", - obscured: true, - }, - }, - ldap: { - enabled: { - type: "boolean", - defaultValue: "false", - secret: false, - }, - - url: { - type: "string", - defaultValue: "", - }, - - bindDn: { - type: "string", - defaultValue: "", - }, - bindPassword: { - type: "string", - defaultValue: "", - obscured: true, - }, - - searchBase: { - type: "string", - defaultValue: "", - }, - searchQuery: { - type: "string", - defaultValue: "" - }, - - adminGroups: { - type: "string", - defaultValue: "" - } - }, - oauth: { - "allowRegistration": { - type: "boolean", - defaultValue: "true", - }, - "ignoreTotp": { - type: "boolean", - defaultValue: "true", - }, - "disablePassword": { - type: "boolean", - defaultValue: "false", - secret: false, - }, - "github-enabled": { - type: "boolean", - defaultValue: "false", - }, - "github-clientId": { - type: "string", - defaultValue: "", - }, - "github-clientSecret": { - type: "string", - defaultValue: "", - obscured: true, - }, - "google-enabled": { - type: "boolean", - defaultValue: "false", - }, - "google-clientId": { - type: "string", - defaultValue: "", - }, - "google-clientSecret": { - type: "string", - defaultValue: "", - obscured: true, - }, - "microsoft-enabled": { - type: "boolean", - defaultValue: "false", - }, - "microsoft-tenant": { - type: "string", - defaultValue: "common", - }, - "microsoft-clientId": { - type: "string", - defaultValue: "", - }, - "microsoft-clientSecret": { - type: "string", - defaultValue: "", - obscured: true, - }, - "discord-enabled": { - type: "boolean", - defaultValue: "false", - }, - "discord-limitedGuild": { - type: "string", - defaultValue: "", - }, - "discord-clientId": { - type: "string", - defaultValue: "", - }, - "discord-clientSecret": { - type: "string", - defaultValue: "", - obscured: true, - }, - "oidc-enabled": { - type: "boolean", - defaultValue: "false", - }, - "oidc-discoveryUri": { - type: "string", - defaultValue: "", - }, - "oidc-usernameClaim": { - type: "string", - defaultValue: "", - }, - "oidc-rolePath": { - type: "string", - defaultValue: "", - }, - "oidc-roleGeneralAccess": { - type: "string", - defaultValue: "", - }, - "oidc-roleAdminAccess": { - type: "string", - defaultValue: "", - }, - "oidc-clientId": { - type: "string", - defaultValue: "", - }, - "oidc-clientSecret": { - type: "string", - defaultValue: "", - obscured: true, - }, - }, -}; - -type ConfigVariables = { - [category: string]: { - [variable: string]: Omit< - Prisma.ConfigCreateInput, - "name" | "category" | "order" - >; - }; -}; - -const prisma = new PrismaClient({ - datasources: { - db: { - url: - process.env.DATABASE_URL || - "file:../data/pingvin-share.db?connection_limit=1", - }, - }, -}); - -async function seedConfigVariables() { - for (const [category, configVariablesOfCategory] of Object.entries( - configVariables - )) { - let order = 0; - for (const [name, properties] of Object.entries( - configVariablesOfCategory - )) { - const existingConfigVariable = await prisma.config.findUnique({ - where: { name_category: { name, category } }, - }); - - // Create a new config variable if it doesn't exist - if (!existingConfigVariable) { - await prisma.config.create({ - data: { - order, - name, - ...properties, - category, - }, - }); - } - order++; - } - } -} - -async function migrateConfigVariables() { - const existingConfigVariables = await prisma.config.findMany(); - const orderMap: { [category: string]: number } = {}; - - for (const existingConfigVariable of existingConfigVariables) { - const configVariable = - configVariables[existingConfigVariable.category]?.[ - existingConfigVariable.name - ]; - - // Delete the config variable if it doesn't exist in the seed - if (!configVariable) { - await prisma.config.delete({ - where: { - name_category: { - name: existingConfigVariable.name, - category: existingConfigVariable.category, - }, - }, - }); - - // Update the config variable if it exists in the seed - } else { - const variableOrder = Object.keys( - configVariables[existingConfigVariable.category] - ).indexOf(existingConfigVariable.name); - await prisma.config.update({ - where: { - name_category: { - name: existingConfigVariable.name, - category: existingConfigVariable.category, - }, - }, - data: { - ...configVariable, - name: existingConfigVariable.name, - category: existingConfigVariable.category, - value: existingConfigVariable.value, - order: variableOrder, - }, - }); - orderMap[existingConfigVariable.category] = variableOrder + 1; - } - } -} - -seedConfigVariables() - .then(() => migrateConfigVariables()) - .then(async () => { - await prisma.$disconnect(); - }) - .catch(async (e) => { - console.error(e); - await prisma.$disconnect(); - process.exit(1); - }); diff --git a/backend/src/app.controller.ts b/backend/src/app.controller.ts deleted file mode 100644 index f7b3bc9..0000000 --- a/backend/src/app.controller.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Controller, Get, Res } from "@nestjs/common"; -import { Response } from "express"; -import { PrismaService } from "./prisma/prisma.service"; - -@Controller("/") -export class AppController { - constructor(private prismaService: PrismaService) {} - - @Get("health") - async health(@Res({ passthrough: true }) res: Response) { - try { - await this.prismaService.config.findMany(); - return "OK"; - } catch { - res.statusCode = 500; - return "ERROR"; - } - } -} diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts deleted file mode 100644 index f64837f..0000000 --- a/backend/src/app.module.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Module } from "@nestjs/common"; - -import { ScheduleModule } from "@nestjs/schedule"; -import { AuthModule } from "./auth/auth.module"; - -import { CacheModule } from "@nestjs/cache-manager"; -import { APP_GUARD } from "@nestjs/core"; -import { ThrottlerGuard, ThrottlerModule } from "@nestjs/throttler"; -import { AppController } from "./app.controller"; -import { ClamScanModule } from "./clamscan/clamscan.module"; -import { ConfigModule } from "./config/config.module"; -import { EmailModule } from "./email/email.module"; -import { FileModule } from "./file/file.module"; -import { JobsModule } from "./jobs/jobs.module"; -import { OAuthModule } from "./oauth/oauth.module"; -import { PrismaModule } from "./prisma/prisma.module"; -import { ReverseShareModule } from "./reverseShare/reverseShare.module"; -import { ShareModule } from "./share/share.module"; -import { UserModule } from "./user/user.module"; - -@Module({ - imports: [ - AuthModule, - ShareModule, - FileModule, - EmailModule, - PrismaModule, - ConfigModule, - JobsModule, - UserModule, - ThrottlerModule.forRoot([ - { - ttl: 60, - limit: 100, - }, - ]), - ScheduleModule.forRoot(), - ClamScanModule, - ReverseShareModule, - OAuthModule, - CacheModule.register({ - isGlobal: true, - }), - ], - controllers: [AppController], - providers: [ - { - provide: APP_GUARD, - useClass: ThrottlerGuard, - }, - ], -}) -export class AppModule {} diff --git a/backend/src/auth/auth.controller.ts b/backend/src/auth/auth.controller.ts deleted file mode 100644 index 4c8b49e..0000000 --- a/backend/src/auth/auth.controller.ts +++ /dev/null @@ -1,202 +0,0 @@ -import { - Body, - Controller, - ForbiddenException, - HttpCode, - Param, - Patch, - Post, - Req, - Res, - UnauthorizedException, - UseGuards, -} from "@nestjs/common"; -import { Throttle } from "@nestjs/throttler"; -import { User } from "@prisma/client"; -import { Request, Response } from "express"; -import { ConfigService } from "src/config/config.service"; -import { AuthService } from "./auth.service"; -import { AuthTotpService } from "./authTotp.service"; -import { GetUser } from "./decorator/getUser.decorator"; -import { AuthRegisterDTO } from "./dto/authRegister.dto"; -import { AuthSignInDTO } from "./dto/authSignIn.dto"; -import { AuthSignInTotpDTO } from "./dto/authSignInTotp.dto"; -import { EnableTotpDTO } from "./dto/enableTotp.dto"; -import { ResetPasswordDTO } from "./dto/resetPassword.dto"; -import { TokenDTO } from "./dto/token.dto"; -import { UpdatePasswordDTO } from "./dto/updatePassword.dto"; -import { VerifyTotpDTO } from "./dto/verifyTotp.dto"; -import { JwtGuard } from "./guard/jwt.guard"; - -@Controller("auth") -export class AuthController { - constructor( - private authService: AuthService, - private authTotpService: AuthTotpService, - private config: ConfigService, - ) {} - - @Post("signUp") - @Throttle({ - default: { - limit: 20, - ttl: 5 * 60, - }, - }) - async signUp( - @Body() dto: AuthRegisterDTO, - @Req() { ip }: Request, - @Res({ passthrough: true }) response: Response, - ) { - if (!this.config.get("share.allowRegistration")) - throw new ForbiddenException("Registration is not allowed"); - - const result = await this.authService.signUp(dto, ip); - - this.authService.addTokensToResponse( - response, - result.refreshToken, - result.accessToken, - ); - - return result; - } - - @Post("signIn") - @Throttle({ - default: { - limit: 20, - ttl: 5 * 60, - }, - }) - @HttpCode(200) - async signIn( - @Body() dto: AuthSignInDTO, - @Req() { ip }: Request, - @Res({ passthrough: true }) response: Response, - ) { - const result = await this.authService.signIn(dto, ip); - - if (result.accessToken && result.refreshToken) { - this.authService.addTokensToResponse( - response, - result.refreshToken, - result.accessToken, - ); - } - - return result; - } - - @Post("signIn/totp") - @Throttle({ - default: { - limit: 20, - ttl: 5 * 60, - }, - }) - @HttpCode(200) - async signInTotp( - @Body() dto: AuthSignInTotpDTO, - @Res({ passthrough: true }) response: Response, - ) { - const result = await this.authTotpService.signInTotp(dto); - - this.authService.addTokensToResponse( - response, - result.refreshToken, - result.accessToken, - ); - - return new TokenDTO().from(result); - } - - @Post("resetPassword/:email") - @Throttle({ - default: { - limit: 20, - ttl: 5 * 60, - }, - }) - @HttpCode(202) - async requestResetPassword(@Param("email") email: string) { - this.authService.requestResetPassword(email); - } - - @Post("resetPassword") - @Throttle({ - default: { - limit: 20, - ttl: 5 * 60, - }, - }) - @HttpCode(204) - async resetPassword(@Body() dto: ResetPasswordDTO) { - return await this.authService.resetPassword(dto.token, dto.password); - } - - @Patch("password") - @UseGuards(JwtGuard) - async updatePassword( - @GetUser() user: User, - @Res({ passthrough: true }) response: Response, - @Body() dto: UpdatePasswordDTO, - ) { - const result = await this.authService.updatePassword( - user, - dto.password, - dto.oldPassword, - ); - - this.authService.addTokensToResponse(response, result.refreshToken); - return new TokenDTO().from(result); - } - - @Post("token") - @HttpCode(200) - async refreshAccessToken( - @Req() request: Request, - @Res({ passthrough: true }) response: Response, - ) { - if (!request.cookies.refresh_token) throw new UnauthorizedException(); - - const accessToken = await this.authService.refreshAccessToken( - request.cookies.refresh_token, - ); - this.authService.addTokensToResponse(response, undefined, accessToken); - return new TokenDTO().from({ accessToken }); - } - - @Post("signOut") - async signOut( - @Req() request: Request, - @Res({ passthrough: true }) response: Response, - ) { - await this.authService.signOut(request.cookies.access_token); - response.cookie("access_token", "accessToken", { maxAge: -1 }); - response.cookie("refresh_token", "", { - path: "/api/auth/token", - httpOnly: true, - maxAge: -1, - }); - } - - @Post("totp/enable") - @UseGuards(JwtGuard) - async enableTotp(@GetUser() user: User, @Body() body: EnableTotpDTO) { - return this.authTotpService.enableTotp(user, body.password); - } - - @Post("totp/verify") - @UseGuards(JwtGuard) - async verifyTotp(@GetUser() user: User, @Body() body: VerifyTotpDTO) { - return this.authTotpService.verifyTotp(user, body.password, body.code); - } - - @Post("totp/disable") - @UseGuards(JwtGuard) - async disableTotp(@GetUser() user: User, @Body() body: VerifyTotpDTO) { - // Note: We use VerifyTotpDTO here because it has both fields we need: password and totp code - return this.authTotpService.disableTotp(user, body.password, body.code); - } -} diff --git a/backend/src/auth/auth.module.ts b/backend/src/auth/auth.module.ts deleted file mode 100644 index 13083cb..0000000 --- a/backend/src/auth/auth.module.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Module } from "@nestjs/common"; -import { JwtModule } from "@nestjs/jwt"; -import { EmailModule } from "src/email/email.module"; -import { AuthController } from "./auth.controller"; -import { AuthService } from "./auth.service"; -import { AuthTotpService } from "./authTotp.service"; -import { JwtStrategy } from "./strategy/jwt.strategy"; -import { LdapService } from "./ldap.service"; -import { UserModule } from "../user/user.module"; - -@Module({ - imports: [ - JwtModule.register({ - global: true, - }), - EmailModule, - UserModule, - ], - controllers: [AuthController], - providers: [AuthService, AuthTotpService, JwtStrategy, LdapService], - exports: [AuthService], -}) -export class AuthModule { } diff --git a/backend/src/auth/auth.service.ts b/backend/src/auth/auth.service.ts deleted file mode 100644 index 1efef08..0000000 --- a/backend/src/auth/auth.service.ts +++ /dev/null @@ -1,296 +0,0 @@ -import { - BadRequestException, - ForbiddenException, - Injectable, - Logger, - UnauthorizedException, -} from "@nestjs/common"; -import { JwtService } from "@nestjs/jwt"; -import { User } from "@prisma/client"; -import { PrismaClientKnownRequestError } from "@prisma/client/runtime/library"; -import * as argon from "argon2"; -import { Request, Response } from "express"; -import * as moment from "moment"; -import { ConfigService } from "src/config/config.service"; -import { EmailService } from "src/email/email.service"; -import { PrismaService } from "src/prisma/prisma.service"; -import { AuthRegisterDTO } from "./dto/authRegister.dto"; -import { AuthSignInDTO } from "./dto/authSignIn.dto"; -import { LdapService } from "./ldap.service"; -import { inspect } from "util"; -import { UserSevice } from "../user/user.service"; - -@Injectable() -export class AuthService { - constructor( - private prisma: PrismaService, - private jwtService: JwtService, - private config: ConfigService, - private emailService: EmailService, - private ldapService: LdapService, - private userService: UserSevice, - ) { } - private readonly logger = new Logger(AuthService.name); - - async signUp(dto: AuthRegisterDTO, ip: string, isAdmin?: boolean) { - const isFirstUser = (await this.prisma.user.count()) == 0; - - const hash = dto.password ? await argon.hash(dto.password) : null; - try { - const user = await this.prisma.user.create({ - data: { - email: dto.email, - username: dto.username, - password: hash, - isAdmin: isAdmin ?? isFirstUser, - }, - }); - - const { refreshToken, refreshTokenId } = await this.createRefreshToken( - user.id, - ); - const accessToken = await this.createAccessToken(user, refreshTokenId); - - this.logger.log(`User ${user.email} signed up from IP ${ip}`); - return { accessToken, refreshToken, user }; - } catch (e) { - if (e instanceof PrismaClientKnownRequestError) { - if (e.code == "P2002") { - const duplicatedField: string = e.meta.target[0]; - throw new BadRequestException( - `A user with this ${duplicatedField} already exists`, - ); - } - } - } - } - - async signIn(dto: AuthSignInDTO, ip: string) { - if (!dto.email && !dto.username) - throw new BadRequestException("Email or username is required"); - - if (!this.config.get("oauth.disablePassword")) { - const user = await this.prisma.user.findFirst({ - where: { - OR: [{ email: dto.email }, { username: dto.username }], - }, - }); - - if (user && await argon.verify(user.password, dto.password)) { - this.logger.log(`Successful password login for user ${user.email} from IP ${ip}`); - return this.generateToken(user); - } - } - - if (this.config.get("ldap.enabled")) { - this.logger.debug(`Trying LDAP login for user ${dto.username}`); - const ldapUser = await this.ldapService.authenticateUser(dto.username, dto.password); - if (ldapUser) { - const user = await this.userService.findOrCreateFromLDAP(dto.username, ldapUser); - this.logger.log(`Successful LDAP login for user ${user.email} from IP ${ip}`); - return this.generateToken(user); - } - } - - this.logger.log( - `Failed login attempt for user ${dto.email || dto.username} from IP ${ip}`, - ); - throw new UnauthorizedException("Wrong email or password"); - } - - async generateToken(user: User, isOAuth = false) { - // TODO: Make all old loginTokens invalid when a new one is created - // Check if the user has TOTP enabled - if ( - user.totpVerified && - !(isOAuth && this.config.get("oauth.ignoreTotp")) - ) { - const loginToken = await this.createLoginToken(user.id); - - return { loginToken }; - } - - const { refreshToken, refreshTokenId } = await this.createRefreshToken( - user.id, - ); - const accessToken = await this.createAccessToken(user, refreshTokenId); - - return { accessToken, refreshToken }; - } - - async requestResetPassword(email: string) { - if (this.config.get("oauth.disablePassword")) - throw new ForbiddenException("Password sign in is disabled"); - - const user = await this.prisma.user.findFirst({ - where: { email }, - include: { resetPasswordToken: true }, - }); - - if (!user) return; - - // Delete old reset password token - if (user.resetPasswordToken) { - await this.prisma.resetPasswordToken.delete({ - where: { token: user.resetPasswordToken.token }, - }); - } - - const { token } = await this.prisma.resetPasswordToken.create({ - data: { - expiresAt: moment().add(1, "hour").toDate(), - user: { connect: { id: user.id } }, - }, - }); - - await this.emailService.sendResetPasswordEmail(user.email, token); - } - - async resetPassword(token: string, newPassword: string) { - if (this.config.get("oauth.disablePassword")) - throw new ForbiddenException("Password sign in is disabled"); - - const user = await this.prisma.user.findFirst({ - where: { resetPasswordToken: { token } }, - }); - - if (!user) throw new BadRequestException("Token invalid or expired"); - - const newPasswordHash = await argon.hash(newPassword); - - await this.prisma.resetPasswordToken.delete({ - where: { token }, - }); - - await this.prisma.user.update({ - where: { id: user.id }, - data: { password: newPasswordHash }, - }); - } - - async updatePassword(user: User, newPassword: string, oldPassword?: string) { - const isPasswordValid = - !user.password || (await argon.verify(user.password, oldPassword)); - - if (!isPasswordValid) throw new ForbiddenException("Invalid password"); - - const hash = await argon.hash(newPassword); - - await this.prisma.refreshToken.deleteMany({ - where: { userId: user.id }, - }); - - await this.prisma.user.update({ - where: { id: user.id }, - data: { password: hash }, - }); - - return this.createRefreshToken(user.id); - } - - async createAccessToken(user: User, refreshTokenId: string) { - return this.jwtService.sign( - { - sub: user.id, - email: user.email, - isAdmin: user.isAdmin, - refreshTokenId, - }, - { - expiresIn: "15min", - secret: this.config.get("internal.jwtSecret"), - }, - ); - } - - async signOut(accessToken: string) { - const { refreshTokenId } = - (this.jwtService.decode(accessToken) as { - refreshTokenId: string; - }) || {}; - - if (refreshTokenId) { - await this.prisma.refreshToken - .delete({ where: { id: refreshTokenId } }) - .catch((e) => { - // Ignore error if refresh token doesn't exist - if (e.code != "P2025") throw e; - }); - } - } - - async refreshAccessToken(refreshToken: string) { - const refreshTokenMetaData = await this.prisma.refreshToken.findUnique({ - where: { token: refreshToken }, - include: { user: true }, - }); - - if (!refreshTokenMetaData || refreshTokenMetaData.expiresAt < new Date()) - throw new UnauthorizedException(); - - return this.createAccessToken( - refreshTokenMetaData.user, - refreshTokenMetaData.id, - ); - } - - async createRefreshToken(userId: string) { - const { id, token } = await this.prisma.refreshToken.create({ - data: { - userId, - expiresAt: moment() - .add(this.config.get("general.sessionDuration"), "hours") - .toDate(), - }, - }); - - return { refreshTokenId: id, refreshToken: token }; - } - - async createLoginToken(userId: string) { - const loginToken = ( - await this.prisma.loginToken.create({ - data: { userId, expiresAt: moment().add(5, "minutes").toDate() }, - }) - ).token; - - return loginToken; - } - - addTokensToResponse( - response: Response, - refreshToken?: string, - accessToken?: string, - ) { - if (accessToken) - response.cookie("access_token", accessToken, { - sameSite: "lax", - maxAge: 1000 * 60 * 60 * 24 * 30 * 3, // 3 months - }); - if (refreshToken) - response.cookie("refresh_token", refreshToken, { - path: "/api/auth/token", - httpOnly: true, - sameSite: "strict", - maxAge: 1000 * 60 * 60 * this.config.get("general.sessionDuration"), - }); - } - - /** - * Returns the user id if the user is logged in, null otherwise - */ - async getIdOfCurrentUser(request: Request): Promise<string | null> { - if (!request.cookies.access_token) return null; - try { - const payload = await this.jwtService.verifyAsync( - request.cookies.access_token, - { - secret: this.config.get("internal.jwtSecret"), - }, - ); - return payload.sub; - } catch { - return null; - } - } -} diff --git a/backend/src/auth/authTotp.service.ts b/backend/src/auth/authTotp.service.ts deleted file mode 100644 index ebbffe8..0000000 --- a/backend/src/auth/authTotp.service.ts +++ /dev/null @@ -1,170 +0,0 @@ -import { - BadRequestException, - ForbiddenException, - Injectable, - UnauthorizedException, -} from "@nestjs/common"; -import { User } from "@prisma/client"; -import * as argon from "argon2"; -import { authenticator, totp } from "otplib"; -import * as qrcode from "qrcode-svg"; -import { PrismaService } from "src/prisma/prisma.service"; -import { AuthService } from "./auth.service"; -import { AuthSignInTotpDTO } from "./dto/authSignInTotp.dto"; - -@Injectable() -export class AuthTotpService { - constructor( - private prisma: PrismaService, - private authService: AuthService, - ) {} - - async signInTotp(dto: AuthSignInTotpDTO) { - const token = await this.prisma.loginToken.findFirst({ - where: { - token: dto.loginToken, - }, - include: { - user: true, - }, - }); - - if (!token || token.used) - throw new UnauthorizedException("Invalid login token"); - - if (token.expiresAt < new Date()) - throw new UnauthorizedException("Login token expired", "token_expired"); - - // Check the TOTP code - const { totpSecret } = token.user; - - if (!totpSecret) { - throw new BadRequestException("TOTP is not enabled"); - } - - if (!authenticator.check(dto.totp, totpSecret)) { - throw new BadRequestException("Invalid code"); - } - - // Set the login token to used - await this.prisma.loginToken.update({ - where: { token: token.token }, - data: { used: true }, - }); - - const { refreshToken, refreshTokenId } = - await this.authService.createRefreshToken(token.user.id); - const accessToken = await this.authService.createAccessToken( - token.user, - refreshTokenId, - ); - - return { accessToken, refreshToken }; - } - - async enableTotp(user: User, password: string) { - if (!(await argon.verify(user.password, password))) - throw new ForbiddenException("Invalid password"); - - // Check if we have a secret already - const { totpVerified } = await this.prisma.user.findUnique({ - where: { id: user.id }, - select: { totpVerified: true }, - }); - - if (totpVerified) { - throw new BadRequestException("TOTP is already enabled"); - } - - const secret = authenticator.generateSecret(); - - const otpURL = totp.keyuri( - user.username || user.email, - "pingvin-share", - secret, - ); - - await this.prisma.user.update({ - where: { id: user.id }, - data: { - totpEnabled: true, - totpSecret: secret, - }, - }); - - // TODO: Maybe we should generate the QR code on the client rather than the server? - const qrCode = new qrcode({ - content: otpURL, - container: "svg-viewbox", - join: true, - }).svg(); - - return { - totpAuthUrl: otpURL, - totpSecret: secret, - qrCode: - "data:image/svg+xml;base64," + Buffer.from(qrCode).toString("base64"), - }; - } - - // TODO: Maybe require a token to verify that the user who started enabling totp is the one who is verifying it? - async verifyTotp(user: User, password: string, code: string) { - if (!(await argon.verify(user.password, password))) - throw new ForbiddenException("Invalid password"); - - const { totpSecret } = await this.prisma.user.findUnique({ - where: { id: user.id }, - select: { totpSecret: true }, - }); - - if (!totpSecret) { - throw new BadRequestException("TOTP is not in progress"); - } - - const expected = authenticator.generate(totpSecret); - - if (code !== expected) { - throw new BadRequestException("Invalid code"); - } - - await this.prisma.user.update({ - where: { id: user.id }, - data: { - totpVerified: true, - }, - }); - - return true; - } - - async disableTotp(user: User, password: string, code: string) { - if (!(await argon.verify(user.password, password))) - throw new ForbiddenException("Invalid password"); - - const { totpSecret } = await this.prisma.user.findUnique({ - where: { id: user.id }, - select: { totpSecret: true }, - }); - - if (!totpSecret) { - throw new BadRequestException("TOTP is not enabled"); - } - - const expected = authenticator.generate(totpSecret); - - if (code !== expected) { - throw new BadRequestException("Invalid code"); - } - - await this.prisma.user.update({ - where: { id: user.id }, - data: { - totpVerified: false, - totpEnabled: false, - totpSecret: null, - }, - }); - - return true; - } -} diff --git a/backend/src/auth/decorator/getUser.decorator.ts b/backend/src/auth/decorator/getUser.decorator.ts deleted file mode 100644 index 3fdd7ce..0000000 --- a/backend/src/auth/decorator/getUser.decorator.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { createParamDecorator, ExecutionContext } from "@nestjs/common"; - -export const GetUser = createParamDecorator( - (data: string, ctx: ExecutionContext) => { - const request = ctx.switchToHttp().getRequest(); - const user = request.user; - return data ? user?.[data] : user; - }, -); diff --git a/backend/src/auth/dto/authRegister.dto.ts b/backend/src/auth/dto/authRegister.dto.ts deleted file mode 100644 index daaa451..0000000 --- a/backend/src/auth/dto/authRegister.dto.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { PickType } from "@nestjs/swagger"; -import { UserDTO } from "src/user/dto/user.dto"; - -export class AuthRegisterDTO extends PickType(UserDTO, [ - "email", - "username", - "password", -] as const) {} diff --git a/backend/src/auth/dto/authSignIn.dto.ts b/backend/src/auth/dto/authSignIn.dto.ts deleted file mode 100644 index 42e7cb9..0000000 --- a/backend/src/auth/dto/authSignIn.dto.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { PickType } from "@nestjs/swagger"; -import { IsEmail, IsOptional, IsString } from "class-validator"; -import { UserDTO } from "src/user/dto/user.dto"; - -export class AuthSignInDTO extends PickType(UserDTO, ["password"] as const) { - @IsEmail() - @IsOptional() - email: string; - - @IsString() - @IsOptional() - username: string; -} diff --git a/backend/src/auth/dto/authSignInTotp.dto.ts b/backend/src/auth/dto/authSignInTotp.dto.ts deleted file mode 100644 index 5ba96db..0000000 --- a/backend/src/auth/dto/authSignInTotp.dto.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { IsString } from "class-validator"; -import { AuthSignInDTO } from "./authSignIn.dto"; - -export class AuthSignInTotpDTO { - @IsString() - totp: string; - - @IsString() - loginToken: string; -} diff --git a/backend/src/auth/dto/enableTotp.dto.ts b/backend/src/auth/dto/enableTotp.dto.ts deleted file mode 100644 index dc55d3d..0000000 --- a/backend/src/auth/dto/enableTotp.dto.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PickType } from "@nestjs/swagger"; -import { UserDTO } from "src/user/dto/user.dto"; - -export class EnableTotpDTO extends PickType(UserDTO, ["password"] as const) {} diff --git a/backend/src/auth/dto/resetPassword.dto.ts b/backend/src/auth/dto/resetPassword.dto.ts deleted file mode 100644 index ad8ea54..0000000 --- a/backend/src/auth/dto/resetPassword.dto.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { PickType } from "@nestjs/swagger"; -import { IsString } from "class-validator"; -import { UserDTO } from "src/user/dto/user.dto"; - -export class ResetPasswordDTO extends PickType(UserDTO, ["password"]) { - @IsString() - token: string; -} diff --git a/backend/src/auth/dto/token.dto.ts b/backend/src/auth/dto/token.dto.ts deleted file mode 100644 index 8810a1e..0000000 --- a/backend/src/auth/dto/token.dto.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Expose, plainToClass } from "class-transformer"; - -export class TokenDTO { - @Expose() - accessToken: string; - - @Expose() - refreshToken: string; - - from(partial: Partial<TokenDTO>) { - return plainToClass(TokenDTO, partial, { - excludeExtraneousValues: true, - }); - } -} diff --git a/backend/src/auth/dto/updatePassword.dto.ts b/backend/src/auth/dto/updatePassword.dto.ts deleted file mode 100644 index c154785..0000000 --- a/backend/src/auth/dto/updatePassword.dto.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { PickType } from "@nestjs/swagger"; -import { IsOptional, IsString } from "class-validator"; -import { UserDTO } from "src/user/dto/user.dto"; - -export class UpdatePasswordDTO extends PickType(UserDTO, ["password"]) { - @IsString() - @IsOptional() - oldPassword?: string; -} diff --git a/backend/src/auth/dto/verifyTotp.dto.ts b/backend/src/auth/dto/verifyTotp.dto.ts deleted file mode 100644 index dc96c1e..0000000 --- a/backend/src/auth/dto/verifyTotp.dto.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { PickType } from "@nestjs/swagger"; -import { IsString } from "class-validator"; -import { UserDTO } from "src/user/dto/user.dto"; - -export class VerifyTotpDTO extends PickType(UserDTO, ["password"] as const) { - @IsString() - code: string; -} diff --git a/backend/src/auth/guard/isAdmin.guard.ts b/backend/src/auth/guard/isAdmin.guard.ts deleted file mode 100644 index 2e69ced..0000000 --- a/backend/src/auth/guard/isAdmin.guard.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { CanActivate, ExecutionContext, Injectable } from "@nestjs/common"; -import { User } from "@prisma/client"; - -@Injectable() -export class AdministratorGuard implements CanActivate { - canActivate(context: ExecutionContext) { - const { user }: { user: User } = context.switchToHttp().getRequest(); - - if (!user) return false; - - return user.isAdmin; - } -} diff --git a/backend/src/auth/guard/jwt.guard.ts b/backend/src/auth/guard/jwt.guard.ts deleted file mode 100644 index 7db8f09..0000000 --- a/backend/src/auth/guard/jwt.guard.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ExecutionContext, Injectable } from "@nestjs/common"; -import { AuthGuard } from "@nestjs/passport"; -import { ConfigService } from "src/config/config.service"; - -@Injectable() -export class JwtGuard extends AuthGuard("jwt") { - constructor(private config: ConfigService) { - super(); - } - async canActivate(context: ExecutionContext): Promise<boolean> { - try { - return (await super.canActivate(context)) as boolean; - } catch { - return this.config.get("share.allowUnauthenticatedShares"); - } - } -} diff --git a/backend/src/auth/ldap.service.ts b/backend/src/auth/ldap.service.ts deleted file mode 100644 index 9a6511f..0000000 --- a/backend/src/auth/ldap.service.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { Inject, Injectable, Logger } from "@nestjs/common"; -import * as ldap from "ldapjs"; -import { AttributeJson, InvalidCredentialsError, SearchCallbackResponse, SearchOptions } from "ldapjs"; -import { inspect } from "node:util"; -import { ConfigService } from "../config/config.service"; - -type LdapSearchEntry = { - objectName: string, - attributes: AttributeJson[], -}; - -async function ldapExecuteSearch(client: ldap.Client, base: string, options: SearchOptions): Promise<LdapSearchEntry[]> { - const searchResponse = await new Promise<SearchCallbackResponse>((resolve, reject) => { - client.search(base, options, (err, res) => { - if (err) { - reject(err); - } else { - resolve(res); - } - }); - }); - - return await new Promise<any[]>((resolve, reject) => { - const entries: LdapSearchEntry[] = []; - searchResponse.on("searchEntry", entry => entries.push({ attributes: entry.pojo.attributes, objectName: entry.pojo.objectName })); - searchResponse.once("error", reject); - searchResponse.once("end", () => resolve(entries)); - }); -} - -async function ldapBindUser(client: ldap.Client, dn: string, password: string): Promise<void> { - return new Promise<void>((resolve, reject) => { - client.bind(dn, password, error => { - if (error) { - reject(error); - } else { - resolve(); - } - }); - }) -} - -async function ldapCreateConnection(logger: Logger, url: string): Promise<ldap.Client> { - const ldapClient = ldap.createClient({ - url: url.split(","), - connectTimeout: 10_000, - timeout: 10_000 - }); - - await new Promise((resolve, reject) => { - ldapClient.once("error", reject); - ldapClient.on("setupError", reject); - ldapClient.on("socketTimeout", reject); - ldapClient.on("connectRefused", () => reject(new Error("connection has been refused"))); - ldapClient.on("connectTimeout", () => reject(new Error("connect timed out"))); - ldapClient.on("connectError", reject); - - ldapClient.on("connect", resolve); - }).catch(error => { - logger.error(`Connect error: ${inspect(error)}`); - ldapClient.destroy(); - throw error; - }); - - return ldapClient; -} - -export type LdapAuthenticateResult = { - userDn: string, - attributes: Record<string, string[]> -}; - -@Injectable() -export class LdapService { - private readonly logger = new Logger(LdapService.name); - constructor( - @Inject(ConfigService) - private readonly serviceConfig: ConfigService, - ) { } - - private async createLdapConnection(): Promise<ldap.Client> { - const ldapUrl = this.serviceConfig.get("ldap.url"); - if (!ldapUrl) { - throw new Error("LDAP server URL is not defined"); - } - - const ldapClient = await ldapCreateConnection(this.logger, ldapUrl); - try { - const bindDn = this.serviceConfig.get("ldap.bindDn") || null; - if (bindDn) { - try { - await ldapBindUser(ldapClient, bindDn, this.serviceConfig.get("ldap.bindPassword")) - } catch (error) { - this.logger.warn(`Failed to bind to default user: ${error}`); - throw new Error("failed to bind to default user"); - } - } - - return ldapClient; - } catch (error) { - ldapClient.destroy(); - throw error; - } - } - - public async authenticateUser(username: string, password: string): Promise<LdapAuthenticateResult | null> { - if (!username.match(/^[a-zA-Z0-0]+$/)) { - return null; - } - - const searchBase = this.serviceConfig.get("ldap.searchBase"); - const searchQuery = this.serviceConfig.get("ldap.searchQuery") - .replaceAll("%username%", username); - - const ldapClient = await this.createLdapConnection(); - try { - const [result] = await ldapExecuteSearch(ldapClient, searchBase, { - filter: searchQuery, - scope: "sub" - }); - - if (!result) { - /* user not found */ - return null; - } - - try { - await ldapBindUser(ldapClient, result.objectName, password); - - /* - * In theory we could query the user attributes now, - * but as we must query the user attributes for validation anyways - * we'll create a second ldap server connection. - */ - return { - userDn: result.objectName, - attributes: Object.fromEntries(result.attributes.map(attribute => [attribute.type, attribute.values])), - }; - } catch (error) { - if (error instanceof InvalidCredentialsError) { - return null; - } - - this.logger.warn(`LDAP user bind failure: ${inspect(error)}`); - return null; - } finally { - ldapClient.destroy(); - } - } catch (error) { - this.logger.warn(`LDAP connect error: ${inspect(error)}`); - return null; - } - } -} \ No newline at end of file diff --git a/backend/src/auth/strategy/jwt.strategy.ts b/backend/src/auth/strategy/jwt.strategy.ts deleted file mode 100644 index 81edf91..0000000 --- a/backend/src/auth/strategy/jwt.strategy.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { PassportStrategy } from "@nestjs/passport"; -import { User } from "@prisma/client"; -import { Request } from "express"; -import { Strategy } from "passport-jwt"; -import { ConfigService } from "src/config/config.service"; -import { PrismaService } from "src/prisma/prisma.service"; - -@Injectable() -export class JwtStrategy extends PassportStrategy(Strategy) { - constructor( - config: ConfigService, - private prisma: PrismaService, - ) { - config.get("internal.jwtSecret"); - super({ - jwtFromRequest: JwtStrategy.extractJWT, - secretOrKey: config.get("internal.jwtSecret"), - }); - } - - private static extractJWT(req: Request) { - if (!req.cookies.access_token) return null; - return req.cookies.access_token; - } - - async validate(payload: { sub: string }) { - const user: User = await this.prisma.user.findUnique({ - where: { id: payload.sub }, - }); - return user; - } -} diff --git a/backend/src/clamscan/clamscan.module.ts b/backend/src/clamscan/clamscan.module.ts deleted file mode 100644 index d261373..0000000 --- a/backend/src/clamscan/clamscan.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { forwardRef, Module } from "@nestjs/common"; -import { FileModule } from "src/file/file.module"; -import { ClamScanService } from "./clamscan.service"; - -@Module({ - imports: [forwardRef(() => FileModule)], - providers: [ClamScanService], - exports: [ClamScanService], -}) -export class ClamScanModule {} diff --git a/backend/src/clamscan/clamscan.service.ts b/backend/src/clamscan/clamscan.service.ts deleted file mode 100644 index 1b5786a..0000000 --- a/backend/src/clamscan/clamscan.service.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { Injectable, Logger } from "@nestjs/common"; -import * as NodeClam from "clamscan"; -import * as fs from "fs"; -import { FileService } from "src/file/file.service"; -import { PrismaService } from "src/prisma/prisma.service"; -import { CLAMAV_HOST, CLAMAV_PORT, SHARE_DIRECTORY } from "../constants"; - -const clamscanConfig = { - clamdscan: { - host: CLAMAV_HOST, - port: CLAMAV_PORT, - localFallback: false, - }, - preference: "clamdscan", -}; -@Injectable() -export class ClamScanService { - private readonly logger = new Logger(ClamScanService.name); - - constructor( - private fileService: FileService, - private prisma: PrismaService, - ) {} - - private ClamScan: Promise<NodeClam | null> = new NodeClam() - .init(clamscanConfig) - .then((res) => { - this.logger.log("ClamAV is active"); - return res; - }) - .catch(() => { - this.logger.log("ClamAV is not active"); - return null; - }); - - async check(shareId: string) { - const clamScan = await this.ClamScan; - - if (!clamScan) return []; - - const infectedFiles = []; - - const files = fs - .readdirSync(`${SHARE_DIRECTORY}/${shareId}`) - .filter((file) => file != "archive.zip"); - - for (const fileId of files) { - const { isInfected } = await clamScan - .isInfected(`${SHARE_DIRECTORY}/${shareId}/${fileId}`) - .catch(() => { - this.logger.log("ClamAV is not active"); - return { isInfected: false }; - }); - - const fileName = ( - await this.prisma.file.findUnique({ where: { id: fileId } }) - ).name; - - if (isInfected) { - infectedFiles.push({ id: fileId, name: fileName }); - } - } - - return infectedFiles; - } - - async checkAndRemove(shareId: string) { - const infectedFiles = await this.check(shareId); - - if (infectedFiles.length > 0) { - await this.fileService.deleteAllFiles(shareId); - await this.prisma.file.deleteMany({ where: { shareId } }); - - const fileNames = infectedFiles.map((file) => file.name).join(", "); - - await this.prisma.share.update({ - where: { id: shareId }, - data: { - removedReason: `Your share got removed because the file(s) ${fileNames} are malicious.`, - }, - }); - - this.logger.warn( - `Share ${shareId} deleted because it contained ${infectedFiles.length} malicious file(s)`, - ); - } - } -} diff --git a/backend/src/config/config.controller.ts b/backend/src/config/config.controller.ts deleted file mode 100644 index 37afdab..0000000 --- a/backend/src/config/config.controller.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { - Body, - Controller, - FileTypeValidator, - Get, - Param, - ParseFilePipe, - Patch, - Post, - UploadedFile, - UseGuards, - UseInterceptors, -} from "@nestjs/common"; -import { FileInterceptor } from "@nestjs/platform-express"; -import { SkipThrottle } from "@nestjs/throttler"; -import { AdministratorGuard } from "src/auth/guard/isAdmin.guard"; -import { JwtGuard } from "src/auth/guard/jwt.guard"; -import { EmailService } from "src/email/email.service"; -import { ConfigService } from "./config.service"; -import { AdminConfigDTO } from "./dto/adminConfig.dto"; -import { ConfigDTO } from "./dto/config.dto"; -import { TestEmailDTO } from "./dto/testEmail.dto"; -import UpdateConfigDTO from "./dto/updateConfig.dto"; -import { LogoService } from "./logo.service"; - -@Controller("configs") -export class ConfigController { - constructor( - private configService: ConfigService, - private logoService: LogoService, - private emailService: EmailService, - ) {} - - @Get() - @SkipThrottle() - async list() { - return new ConfigDTO().fromList(await this.configService.list()); - } - - @Get("admin/:category") - @UseGuards(JwtGuard, AdministratorGuard) - async getByCategory(@Param("category") category: string) { - return new AdminConfigDTO().fromList( - await this.configService.getByCategory(category), - ); - } - - @Patch("admin") - @UseGuards(JwtGuard, AdministratorGuard) - async updateMany(@Body() data: UpdateConfigDTO[]) { - return new AdminConfigDTO().fromList( - await this.configService.updateMany(data), - ); - } - - @Post("admin/testEmail") - @UseGuards(JwtGuard, AdministratorGuard) - async testEmail(@Body() { email }: TestEmailDTO) { - await this.emailService.sendTestMail(email); - } - - @Post("admin/logo") - @UseInterceptors(FileInterceptor("file")) - @UseGuards(JwtGuard, AdministratorGuard) - async uploadLogo( - @UploadedFile( - new ParseFilePipe({ - validators: [new FileTypeValidator({ fileType: "image/png" })], - }), - ) - file: Express.Multer.File, - ) { - return await this.logoService.create(file.buffer); - } -} diff --git a/backend/src/config/config.module.ts b/backend/src/config/config.module.ts deleted file mode 100644 index 5a84b24..0000000 --- a/backend/src/config/config.module.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Global, Module } from "@nestjs/common"; -import { EmailModule } from "src/email/email.module"; -import { PrismaService } from "src/prisma/prisma.service"; -import { ConfigController } from "./config.controller"; -import { ConfigService } from "./config.service"; -import { LogoService } from "./logo.service"; - -@Global() -@Module({ - imports: [EmailModule], - providers: [ - { - provide: "CONFIG_VARIABLES", - useFactory: async (prisma: PrismaService) => { - return await prisma.config.findMany(); - }, - inject: [PrismaService], - }, - ConfigService, - LogoService, - ], - controllers: [ConfigController], - exports: [ConfigService], -}) -export class ConfigModule {} diff --git a/backend/src/config/config.service.ts b/backend/src/config/config.service.ts deleted file mode 100644 index a5e02a7..0000000 --- a/backend/src/config/config.service.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { - BadRequestException, - Inject, - Injectable, - NotFoundException, -} from "@nestjs/common"; -import { Config } from "@prisma/client"; -import { PrismaService } from "src/prisma/prisma.service"; -import { EventEmitter } from "events"; - -/** - * ConfigService extends EventEmitter to allow listening for config updates, - * now only `update` event will be emitted. - */ -@Injectable() -export class ConfigService extends EventEmitter { - constructor( - @Inject("CONFIG_VARIABLES") private configVariables: Config[], - private prisma: PrismaService, - ) { - super(); - } - - get(key: `${string}.${string}`): any { - const configVariable = this.configVariables.filter( - (variable) => `${variable.category}.${variable.name}` == key, - )[0]; - - if (!configVariable) throw new Error(`Config variable ${key} not found`); - - const value = configVariable.value ?? configVariable.defaultValue; - - if (configVariable.type == "number") return parseInt(value); - if (configVariable.type == "boolean") return value == "true"; - if (configVariable.type == "string" || configVariable.type == "text") - return value; - } - - async getByCategory(category: string) { - const configVariables = await this.prisma.config.findMany({ - orderBy: { order: "asc" }, - where: { category, locked: { equals: false } }, - }); - - return configVariables.map((variable) => { - return { - ...variable, - key: `${variable.category}.${variable.name}`, - value: variable.value ?? variable.defaultValue, - }; - }); - } - - async list() { - const configVariables = await this.prisma.config.findMany({ - where: { secret: { equals: false } }, - }); - - return configVariables.map((variable) => { - return { - ...variable, - key: `${variable.category}.${variable.name}`, - value: variable.value ?? variable.defaultValue, - }; - }); - } - - async updateMany(data: { key: string; value: string | number | boolean }[]) { - const response: Config[] = []; - - for (const variable of data) { - response.push(await this.update(variable.key, variable.value)); - } - - return response; - } - - async update(key: string, value: string | number | boolean) { - const configVariable = await this.prisma.config.findUnique({ - where: { - name_category: { - category: key.split(".")[0], - name: key.split(".")[1], - }, - }, - }); - - if (!configVariable || configVariable.locked) - throw new NotFoundException("Config variable not found"); - - if (value === "") { - value = null; - } else if ( - typeof value != configVariable.type && - typeof value == "string" && - configVariable.type != "text" - ) { - throw new BadRequestException( - `Config variable must be of type ${configVariable.type}`, - ); - } - - const updatedVariable = await this.prisma.config.update({ - where: { - name_category: { - category: key.split(".")[0], - name: key.split(".")[1], - }, - }, - data: { value: value === null ? null : value.toString() }, - }); - - this.configVariables = await this.prisma.config.findMany(); - - this.emit("update", key, value); - - return updatedVariable; - } -} diff --git a/backend/src/config/dto/adminConfig.dto.ts b/backend/src/config/dto/adminConfig.dto.ts deleted file mode 100644 index c54b36f..0000000 --- a/backend/src/config/dto/adminConfig.dto.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Expose, plainToClass } from "class-transformer"; -import { ConfigDTO } from "./config.dto"; - -export class AdminConfigDTO extends ConfigDTO { - @Expose() - name: string; - - @Expose() - secret: boolean; - - @Expose() - defaultValue: string; - - @Expose() - updatedAt: Date; - - @Expose() - obscured: boolean; - - from(partial: Partial<AdminConfigDTO>) { - return plainToClass(AdminConfigDTO, partial, { - excludeExtraneousValues: true, - }); - } - - fromList(partial: Partial<AdminConfigDTO>[]) { - return partial.map((part) => - plainToClass(AdminConfigDTO, part, { excludeExtraneousValues: true }), - ); - } -} diff --git a/backend/src/config/dto/config.dto.ts b/backend/src/config/dto/config.dto.ts deleted file mode 100644 index 301fe8c..0000000 --- a/backend/src/config/dto/config.dto.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Expose, plainToClass } from "class-transformer"; - -export class ConfigDTO { - @Expose() - key: string; - - @Expose() - value: string; - - @Expose() - type: string; - - fromList(partial: Partial<ConfigDTO>[]) { - return partial.map((part) => - plainToClass(ConfigDTO, part, { excludeExtraneousValues: true }), - ); - } -} diff --git a/backend/src/config/dto/testEmail.dto.ts b/backend/src/config/dto/testEmail.dto.ts deleted file mode 100644 index 527d5d0..0000000 --- a/backend/src/config/dto/testEmail.dto.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { IsEmail, IsNotEmpty } from "class-validator"; - -export class TestEmailDTO { - @IsEmail() - @IsNotEmpty() - email: string; -} diff --git a/backend/src/config/dto/updateConfig.dto.ts b/backend/src/config/dto/updateConfig.dto.ts deleted file mode 100644 index 40eee2b..0000000 --- a/backend/src/config/dto/updateConfig.dto.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { IsNotEmpty, IsString } from "class-validator"; - -class UpdateConfigDTO { - @IsString() - key: string; - - @IsNotEmpty() - value: string | number | boolean; -} - -export default UpdateConfigDTO; diff --git a/backend/src/config/logo.service.ts b/backend/src/config/logo.service.ts deleted file mode 100644 index e975d68..0000000 --- a/backend/src/config/logo.service.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import * as fs from "fs"; -import * as sharp from "sharp"; - -const IMAGES_PATH = "../frontend/public/img"; - -@Injectable() -export class LogoService { - async create(file: Buffer) { - const resized = await sharp(file).resize(900).toBuffer(); - fs.writeFileSync(`${IMAGES_PATH}/logo.png`, resized, "binary"); - this.createFavicon(file); - this.createPWAIcons(file); - } - - async createFavicon(file: Buffer) { - const resized = await sharp(file).resize(16).toBuffer(); - fs.promises.writeFile(`${IMAGES_PATH}/favicon.ico`, resized, "binary"); - } - - async createPWAIcons(file: Buffer) { - const sizes = [48, 72, 96, 128, 144, 152, 192, 384, 512]; - - for (const size of sizes) { - const resized = await sharp(file).resize(size).toBuffer(); - fs.promises.writeFile( - `${IMAGES_PATH}/icons/icon-${size}x${size}.png`, - resized, - "binary", - ); - } - } -} diff --git a/backend/src/constants.ts b/backend/src/constants.ts deleted file mode 100644 index e00299d..0000000 --- a/backend/src/constants.ts +++ /dev/null @@ -1,9 +0,0 @@ -export const DATA_DIRECTORY = process.env.DATA_DIRECTORY || "./data"; -export const SHARE_DIRECTORY = `${DATA_DIRECTORY}/uploads/shares`; -export const DATABASE_URL = - process.env.DATABASE_URL || - "file:../data/pingvin-share.db?connection_limit=1"; -export const CLAMAV_HOST = - process.env.CLAMAV_HOST || - (process.env.NODE_ENV == "docker" ? "clamav" : "127.0.0.1"); -export const CLAMAV_PORT = parseInt(process.env.CLAMAV_PORT) || 3310; diff --git a/backend/src/email/email.module.ts b/backend/src/email/email.module.ts deleted file mode 100644 index 244dfab..0000000 --- a/backend/src/email/email.module.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Module } from "@nestjs/common"; -import { EmailService } from "./email.service"; - -@Module({ - providers: [EmailService], - exports: [EmailService], -}) -export class EmailModule {} diff --git a/backend/src/email/email.service.ts b/backend/src/email/email.service.ts deleted file mode 100644 index e6dbe64..0000000 --- a/backend/src/email/email.service.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { - Injectable, - InternalServerErrorException, - Logger, -} from "@nestjs/common"; -import { User } from "@prisma/client"; -import * as moment from "moment"; -import * as nodemailer from "nodemailer"; -import { ConfigService } from "src/config/config.service"; - -@Injectable() -export class EmailService { - constructor(private config: ConfigService) {} - private readonly logger = new Logger(EmailService.name); - - getTransporter() { - if (!this.config.get("smtp.enabled")) - throw new InternalServerErrorException("SMTP is disabled"); - - return nodemailer.createTransport({ - host: this.config.get("smtp.host"), - port: this.config.get("smtp.port"), - secure: this.config.get("smtp.port") == 465, - auth: { - user: this.config.get("smtp.username"), - pass: this.config.get("smtp.password"), - }, - tls: { - rejectUnauthorized: !this.config.get( - "smtp.allowUnauthorizedCertificates", - ), - }, - }); - } - - private async sendMail(email: string, subject: string, text: string) { - await this.getTransporter() - .sendMail({ - from: `"${this.config.get("general.appName")}" <${this.config.get( - "smtp.email", - )}>`, - to: email, - subject, - text, - }) - .catch((e) => { - this.logger.error(e); - throw new InternalServerErrorException("Failed to send email"); - }); - } - - async sendMailToShareRecipients( - recipientEmail: string, - shareId: string, - creator?: User, - description?: string, - expiration?: Date, - ) { - if (!this.config.get("email.enableShareEmailRecipients")) - throw new InternalServerErrorException("Email service disabled"); - - const shareUrl = `${this.config.get("general.appUrl")}/s/${shareId}`; - - await this.sendMail( - recipientEmail, - this.config.get("email.shareRecipientsSubject"), - this.config - .get("email.shareRecipientsMessage") - .replaceAll("\\n", "\n") - .replaceAll("{creator}", creator?.username ?? "Someone") - .replaceAll("{shareUrl}", shareUrl) - .replaceAll("{desc}", description ?? "No description") - .replaceAll( - "{expires}", - moment(expiration).unix() != 0 - ? moment(expiration).fromNow() - : "in: never", - ), - ); - } - - async sendMailToReverseShareCreator(recipientEmail: string, shareId: string) { - const shareUrl = `${this.config.get("general.appUrl")}/s/${shareId}`; - - await this.sendMail( - recipientEmail, - this.config.get("email.reverseShareSubject"), - this.config - .get("email.reverseShareMessage") - .replaceAll("\\n", "\n") - .replaceAll("{shareUrl}", shareUrl), - ); - } - - async sendResetPasswordEmail(recipientEmail: string, token: string) { - const resetPasswordUrl = `${this.config.get( - "general.appUrl", - )}/auth/resetPassword/${token}`; - - await this.sendMail( - recipientEmail, - this.config.get("email.resetPasswordSubject"), - this.config - .get("email.resetPasswordMessage") - .replaceAll("\\n", "\n") - .replaceAll("{url}", resetPasswordUrl), - ); - } - - async sendInviteEmail(recipientEmail: string, password: string) { - const loginUrl = `${this.config.get("general.appUrl")}/auth/signIn`; - - await this.sendMail( - recipientEmail, - this.config.get("email.inviteSubject"), - this.config - .get("email.inviteMessage") - .replaceAll("{url}", loginUrl) - .replaceAll("{password}", password), - ); - } - - async sendTestMail(recipientEmail: string) { - await this.getTransporter() - .sendMail({ - from: `"${this.config.get("general.appName")}" <${this.config.get( - "smtp.email", - )}>`, - to: recipientEmail, - subject: "Test email", - text: "This is a test email", - }) - .catch((e) => { - this.logger.error(e); - throw new InternalServerErrorException(e.message); - }); - } -} diff --git a/backend/src/file/dto/file.dto.ts b/backend/src/file/dto/file.dto.ts deleted file mode 100644 index 456e807..0000000 --- a/backend/src/file/dto/file.dto.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Expose, plainToClass } from "class-transformer"; -import { ShareDTO } from "src/share/dto/share.dto"; - -export class FileDTO { - @Expose() - id: string; - - @Expose() - name: string; - - @Expose() - size: string; - - share: ShareDTO; - - from(partial: Partial<FileDTO>) { - return plainToClass(FileDTO, partial, { excludeExtraneousValues: true }); - } -} diff --git a/backend/src/file/file.controller.ts b/backend/src/file/file.controller.ts deleted file mode 100644 index 4ec6cd1..0000000 --- a/backend/src/file/file.controller.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { - Body, - Controller, - Delete, - Get, - Param, - Post, - Query, - Res, - StreamableFile, - UseGuards, -} from "@nestjs/common"; -import { SkipThrottle } from "@nestjs/throttler"; -import * as contentDisposition from "content-disposition"; -import { Response } from "express"; -import { CreateShareGuard } from "src/share/guard/createShare.guard"; -import { ShareOwnerGuard } from "src/share/guard/shareOwner.guard"; -import { FileService } from "./file.service"; -import { FileSecurityGuard } from "./guard/fileSecurity.guard"; - -@Controller("shares/:shareId/files") -export class FileController { - constructor(private fileService: FileService) {} - - @Post() - @SkipThrottle() - @UseGuards(CreateShareGuard, ShareOwnerGuard) - async create( - @Query() - query: { - id: string; - name: string; - chunkIndex: string; - totalChunks: string; - }, - @Body() body: string, - @Param("shareId") shareId: string, - ) { - const { id, name, chunkIndex, totalChunks } = query; - - // Data can be empty if the file is empty - return await this.fileService.create( - body, - { index: parseInt(chunkIndex), total: parseInt(totalChunks) }, - { id, name }, - shareId, - ); - } - - @Get("zip") - @UseGuards(FileSecurityGuard) - async getZip( - @Res({ passthrough: true }) res: Response, - @Param("shareId") shareId: string, - ) { - const zip = this.fileService.getZip(shareId); - res.set({ - "Content-Type": "application/zip", - "Content-Disposition": contentDisposition(`${shareId}.zip`), - }); - - return new StreamableFile(zip); - } - - @Get(":fileId") - @UseGuards(FileSecurityGuard) - async getFile( - @Res({ passthrough: true }) res: Response, - @Param("shareId") shareId: string, - @Param("fileId") fileId: string, - @Query("download") download = "true", - ) { - const file = await this.fileService.get(shareId, fileId); - - const headers = { - "Content-Type": file.metaData.mimeType, - "Content-Length": file.metaData.size, - "Content-Security-Policy": "script-src 'none'", - }; - - if (download === "true") { - headers["Content-Disposition"] = contentDisposition(file.metaData.name); - } - - res.set(headers); - - return new StreamableFile(file.file); - } - - @Delete(":fileId") - @SkipThrottle() - @UseGuards(ShareOwnerGuard) - async remove( - @Param("fileId") fileId: string, - @Param("shareId") shareId: string, - ) { - await this.fileService.remove(shareId, fileId); - } -} diff --git a/backend/src/file/file.module.ts b/backend/src/file/file.module.ts deleted file mode 100644 index 9064317..0000000 --- a/backend/src/file/file.module.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Module } from "@nestjs/common"; -import { JwtModule } from "@nestjs/jwt"; -import { ReverseShareModule } from "src/reverseShare/reverseShare.module"; -import { ShareModule } from "src/share/share.module"; -import { FileController } from "./file.controller"; -import { FileService } from "./file.service"; - -@Module({ - imports: [JwtModule.register({}), ReverseShareModule, ShareModule], - controllers: [FileController], - providers: [FileService], - exports: [FileService], -}) -export class FileModule {} diff --git a/backend/src/file/file.service.ts b/backend/src/file/file.service.ts deleted file mode 100644 index ce9958d..0000000 --- a/backend/src/file/file.service.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { - BadRequestException, - HttpException, - HttpStatus, - Injectable, - NotFoundException, -} from "@nestjs/common"; -import { JwtService } from "@nestjs/jwt"; -import * as crypto from "crypto"; -import * as fs from "fs"; -import * as mime from "mime-types"; -import { ConfigService } from "src/config/config.service"; -import { PrismaService } from "src/prisma/prisma.service"; -import { SHARE_DIRECTORY } from "../constants"; - -@Injectable() -export class FileService { - constructor( - private prisma: PrismaService, - private jwtService: JwtService, - private config: ConfigService, - ) {} - - async create( - data: string, - chunk: { index: number; total: number }, - file: { id?: string; name: string }, - shareId: string, - ) { - if (!file.id) file.id = crypto.randomUUID(); - - const share = await this.prisma.share.findUnique({ - where: { id: shareId }, - include: { files: true, reverseShare: true }, - }); - - if (share.uploadLocked) - throw new BadRequestException("Share is already completed"); - - let diskFileSize: number; - try { - diskFileSize = fs.statSync( - `${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`, - ).size; - } catch { - diskFileSize = 0; - } - - // If the sent chunk index and the expected chunk index doesn't match throw an error - const chunkSize = this.config.get("share.chunkSize"); - const expectedChunkIndex = Math.ceil(diskFileSize / chunkSize); - - if (expectedChunkIndex != chunk.index) - throw new BadRequestException({ - message: "Unexpected chunk received", - error: "unexpected_chunk_index", - expectedChunkIndex, - }); - - const buffer = Buffer.from(data, "base64"); - - // Check if share size limit is exceeded - const fileSizeSum = share.files.reduce( - (n, { size }) => n + parseInt(size), - 0, - ); - - const shareSizeSum = fileSizeSum + diskFileSize + buffer.byteLength; - - if ( - shareSizeSum > this.config.get("share.maxSize") || - (share.reverseShare?.maxShareSize && - shareSizeSum > parseInt(share.reverseShare.maxShareSize)) - ) { - throw new HttpException( - "Max share size exceeded", - HttpStatus.PAYLOAD_TOO_LARGE, - ); - } - - fs.appendFileSync( - `${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`, - buffer, - ); - - const isLastChunk = chunk.index == chunk.total - 1; - if (isLastChunk) { - fs.renameSync( - `${SHARE_DIRECTORY}/${shareId}/${file.id}.tmp-chunk`, - `${SHARE_DIRECTORY}/${shareId}/${file.id}`, - ); - const fileSize = fs.statSync( - `${SHARE_DIRECTORY}/${shareId}/${file.id}`, - ).size; - await this.prisma.file.create({ - data: { - id: file.id, - name: file.name, - size: fileSize.toString(), - share: { connect: { id: shareId } }, - }, - }); - } - - return file; - } - - async get(shareId: string, fileId: string) { - const fileMetaData = await this.prisma.file.findUnique({ - where: { id: fileId }, - }); - - if (!fileMetaData) throw new NotFoundException("File not found"); - - const file = fs.createReadStream(`${SHARE_DIRECTORY}/${shareId}/${fileId}`); - - return { - metaData: { - mimeType: mime.contentType(fileMetaData.name.split(".").pop()), - ...fileMetaData, - size: fileMetaData.size, - }, - file, - }; - } - - async remove(shareId: string, fileId: string) { - const fileMetaData = await this.prisma.file.findUnique({ - where: { id: fileId }, - }); - - if (!fileMetaData) throw new NotFoundException("File not found"); - - fs.unlinkSync(`${SHARE_DIRECTORY}/${shareId}/${fileId}`); - - await this.prisma.file.delete({ where: { id: fileId } }); - } - - async deleteAllFiles(shareId: string) { - await fs.promises.rm(`${SHARE_DIRECTORY}/${shareId}`, { - recursive: true, - force: true, - }); - } - - getZip(shareId: string) { - return fs.createReadStream(`${SHARE_DIRECTORY}/${shareId}/archive.zip`); - } -} diff --git a/backend/src/file/guard/fileSecurity.guard.ts b/backend/src/file/guard/fileSecurity.guard.ts deleted file mode 100644 index e357e80..0000000 --- a/backend/src/file/guard/fileSecurity.guard.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { - ExecutionContext, - ForbiddenException, - Injectable, - NotFoundException, -} from "@nestjs/common"; -import { Request } from "express"; -import * as moment from "moment"; -import { PrismaService } from "src/prisma/prisma.service"; -import { ShareSecurityGuard } from "src/share/guard/shareSecurity.guard"; -import { ShareService } from "src/share/share.service"; -import { ConfigService } from "src/config/config.service"; - -@Injectable() -export class FileSecurityGuard extends ShareSecurityGuard { - constructor( - private _shareService: ShareService, - private _prisma: PrismaService, - _config: ConfigService, - ) { - super(_shareService, _prisma, _config); - } - - async canActivate(context: ExecutionContext) { - const request: Request = context.switchToHttp().getRequest(); - - const shareId = Object.prototype.hasOwnProperty.call( - request.params, - "shareId", - ) - ? request.params.shareId - : request.params.id; - - const shareToken = request.cookies[`share_${shareId}_token`]; - - const share = await this._prisma.share.findUnique({ - where: { id: shareId }, - include: { security: true }, - }); - - // If there is no share token the user requests a file directly - if (!shareToken) { - if ( - !share || - (moment().isAfter(share.expiration) && - !moment(share.expiration).isSame(0)) - ) { - throw new NotFoundException("File not found"); - } - - if (share.security?.password) - throw new ForbiddenException("This share is password protected"); - - if (share.security?.maxViews && share.security.maxViews <= share.views) { - throw new ForbiddenException( - "Maximum views exceeded", - "share_max_views_exceeded", - ); - } - - await this._shareService.increaseViewCount(share); - return true; - } else { - return super.canActivate(context); - } - } -} diff --git a/backend/src/jobs/jobs.module.ts b/backend/src/jobs/jobs.module.ts deleted file mode 100644 index 91ff593..0000000 --- a/backend/src/jobs/jobs.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Module } from "@nestjs/common"; -import { FileModule } from "src/file/file.module"; -import { ReverseShareModule } from "src/reverseShare/reverseShare.module"; -import { JobsService } from "./jobs.service"; - -@Module({ - imports: [FileModule, ReverseShareModule], - providers: [JobsService], -}) -export class JobsModule {} diff --git a/backend/src/jobs/jobs.service.ts b/backend/src/jobs/jobs.service.ts deleted file mode 100644 index dc50925..0000000 --- a/backend/src/jobs/jobs.service.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { Injectable, Logger } from "@nestjs/common"; -import { Cron } from "@nestjs/schedule"; -import * as fs from "fs"; -import * as moment from "moment"; -import { FileService } from "src/file/file.service"; -import { PrismaService } from "src/prisma/prisma.service"; -import { ReverseShareService } from "src/reverseShare/reverseShare.service"; -import { SHARE_DIRECTORY } from "../constants"; - -@Injectable() -export class JobsService { - private readonly logger = new Logger(JobsService.name); - - constructor( - private prisma: PrismaService, - private reverseShareService: ReverseShareService, - private fileService: FileService, - ) {} - - @Cron("0 * * * *") - async deleteExpiredShares() { - const expiredShares = await this.prisma.share.findMany({ - where: { - // We want to remove only shares that have an expiration date less than the current date, but not 0 - AND: [ - { expiration: { lt: new Date() } }, - { expiration: { not: moment(0).toDate() } }, - ], - }, - }); - - for (const expiredShare of expiredShares) { - await this.prisma.share.delete({ - where: { id: expiredShare.id }, - }); - - await this.fileService.deleteAllFiles(expiredShare.id); - } - - if (expiredShares.length > 0) { - this.logger.log(`Deleted ${expiredShares.length} expired shares`); - } - } - - @Cron("0 * * * *") - async deleteExpiredReverseShares() { - const expiredReverseShares = await this.prisma.reverseShare.findMany({ - where: { - shareExpiration: { lt: new Date() }, - }, - }); - - for (const expiredReverseShare of expiredReverseShares) { - await this.reverseShareService.remove(expiredReverseShare.id); - } - - if (expiredReverseShares.length > 0) { - this.logger.log( - `Deleted ${expiredReverseShares.length} expired reverse shares`, - ); - } - } - - @Cron("0 */6 * * *") - async deleteUnfinishedShares() { - const unfinishedShares = await this.prisma.share.findMany({ - where: { - createdAt: { lt: moment().subtract(1, "day").toDate() }, - uploadLocked: false, - }, - }); - - for (const unfinishedShare of unfinishedShares) { - await this.prisma.share.delete({ - where: { id: unfinishedShare.id }, - }); - - await this.fileService.deleteAllFiles(unfinishedShare.id); - } - - if (unfinishedShares.length > 0) { - this.logger.log(`Deleted ${unfinishedShares.length} unfinished shares`); - } - } - - @Cron("0 0 * * *") - deleteTemporaryFiles() { - let filesDeleted = 0; - - const shareDirectories = fs - .readdirSync(SHARE_DIRECTORY, { withFileTypes: true }) - .filter((dirent) => dirent.isDirectory()) - .map((dirent) => dirent.name); - - for (const shareDirectory of shareDirectories) { - const temporaryFiles = fs - .readdirSync(`${SHARE_DIRECTORY}/${shareDirectory}`) - .filter((file) => file.endsWith(".tmp-chunk")); - - for (const file of temporaryFiles) { - const stats = fs.statSync( - `${SHARE_DIRECTORY}/${shareDirectory}/${file}`, - ); - const isOlderThanOneDay = moment(stats.mtime) - .add(1, "day") - .isBefore(moment()); - - if (isOlderThanOneDay) { - fs.rmSync(`${SHARE_DIRECTORY}/${shareDirectory}/${file}`); - filesDeleted++; - } - } - } - - this.logger.log(`Deleted ${filesDeleted} temporary files`); - } - - @Cron("1 * * * *") - async deleteExpiredTokens() { - const { count: refreshTokenCount } = - await this.prisma.refreshToken.deleteMany({ - where: { expiresAt: { lt: new Date() } }, - }); - - const { count: loginTokenCount } = await this.prisma.loginToken.deleteMany({ - where: { expiresAt: { lt: new Date() } }, - }); - - const { count: resetPasswordTokenCount } = - await this.prisma.resetPasswordToken.deleteMany({ - where: { expiresAt: { lt: new Date() } }, - }); - - const deletedTokensCount = - refreshTokenCount + loginTokenCount + resetPasswordTokenCount; - - if (deletedTokensCount > 0) { - this.logger.log(`Deleted ${deletedTokensCount} expired refresh tokens`); - } - } -} diff --git a/backend/src/main.ts b/backend/src/main.ts deleted file mode 100644 index b77d01c..0000000 --- a/backend/src/main.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { - ClassSerializerInterceptor, - Logger, - ValidationPipe, -} from "@nestjs/common"; -import { NestFactory, Reflector } from "@nestjs/core"; -import { NestExpressApplication } from "@nestjs/platform-express"; -import { DocumentBuilder, SwaggerModule } from "@nestjs/swagger"; -import * as bodyParser from "body-parser"; -import * as cookieParser from "cookie-parser"; -import { NextFunction, Request, Response } from "express"; -import * as fs from "fs"; -import { AppModule } from "./app.module"; -import { ConfigService } from "./config/config.service"; -import { DATA_DIRECTORY } from "./constants"; - -async function bootstrap() { - const app = await NestFactory.create<NestExpressApplication>(AppModule); - app.useGlobalPipes(new ValidationPipe({ whitelist: true })); - app.useGlobalInterceptors(new ClassSerializerInterceptor(app.get(Reflector))); - - const config = app.get<ConfigService>(ConfigService); - - app.use((req: Request, res: Response, next: NextFunction) => { - const chunkSize = config.get("share.chunkSize"); - bodyParser.raw({ - type: "application/octet-stream", - limit: `${chunkSize}B`, - })(req, res, next); - }); - - app.use(cookieParser()); - app.set("trust proxy", true); - - await fs.promises.mkdir(`${DATA_DIRECTORY}/uploads/_temp`, { - recursive: true, - }); - - app.setGlobalPrefix("api"); - - // Setup Swagger in development mode - if (process.env.NODE_ENV == "development") { - const config = new DocumentBuilder() - .setTitle("Pingvin Share API") - .setVersion("1.0") - .build(); - const document = SwaggerModule.createDocument(app, config); - SwaggerModule.setup("api/swagger", app, document); - } - - await app.listen(parseInt(process.env.PORT) || 8080); - - const logger = new Logger("UnhandledAsyncError"); - process.on("unhandledRejection", (e) => logger.error(e)); -} -bootstrap(); diff --git a/backend/src/oauth/dto/oauthCallback.dto.ts b/backend/src/oauth/dto/oauthCallback.dto.ts deleted file mode 100644 index 656b63a..0000000 --- a/backend/src/oauth/dto/oauthCallback.dto.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IsString } from "class-validator"; - -export class OAuthCallbackDto { - @IsString() - code: string; - - @IsString() - state: string; -} diff --git a/backend/src/oauth/dto/oauthSignIn.dto.ts b/backend/src/oauth/dto/oauthSignIn.dto.ts deleted file mode 100644 index 3efe889..0000000 --- a/backend/src/oauth/dto/oauthSignIn.dto.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface OAuthSignInDto { - provider: "github" | "google" | "microsoft" | "discord" | "oidc"; - providerId: string; - providerUsername: string; - email: string; - isAdmin?: boolean; -} diff --git a/backend/src/oauth/exceptions/errorPage.exception.ts b/backend/src/oauth/exceptions/errorPage.exception.ts deleted file mode 100644 index 0bfd62a..0000000 --- a/backend/src/oauth/exceptions/errorPage.exception.ts +++ /dev/null @@ -1,15 +0,0 @@ -export class ErrorPageException extends Error { - /** - * Exception for redirecting to error page (all i18n key should omit `error.msg` and `error.param` prefix) - * @param key i18n key of message - * @param redirect redirect url - * @param params message params (key) - */ - constructor( - public readonly key: string = "default", - public readonly redirect?: string, - public readonly params?: string[], - ) { - super("error"); - } -} diff --git a/backend/src/oauth/filter/errorPageException.filter.ts b/backend/src/oauth/filter/errorPageException.filter.ts deleted file mode 100644 index 055efa3..0000000 --- a/backend/src/oauth/filter/errorPageException.filter.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { ArgumentsHost, Catch, ExceptionFilter, Logger } from "@nestjs/common"; -import { ConfigService } from "../../config/config.service"; -import { ErrorPageException } from "../exceptions/errorPage.exception"; - -@Catch(ErrorPageException) -export class ErrorPageExceptionFilter implements ExceptionFilter { - private readonly logger = new Logger(ErrorPageExceptionFilter.name); - - constructor(private config: ConfigService) {} - - catch(exception: ErrorPageException, host: ArgumentsHost) { - this.logger.error( - JSON.stringify({ - error: exception.key, - params: exception.params, - redirect: exception.redirect, - }), - ); - - const ctx = host.switchToHttp(); - const response = ctx.getResponse(); - - const url = new URL(`${this.config.get("general.appUrl")}/error`); - url.searchParams.set("error", exception.key); - if (exception.redirect) { - url.searchParams.set("redirect", exception.redirect); - } else { - const redirect = ctx.getRequest().cookies.access_token - ? "/account" - : "/auth/signIn"; - url.searchParams.set("redirect", redirect); - } - if (exception.params) { - url.searchParams.set("params", exception.params.join(",")); - } - - response.redirect(url.toString()); - } -} diff --git a/backend/src/oauth/filter/oauthException.filter.ts b/backend/src/oauth/filter/oauthException.filter.ts deleted file mode 100644 index c5b8277..0000000 --- a/backend/src/oauth/filter/oauthException.filter.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { - ArgumentsHost, - Catch, - ExceptionFilter, - HttpException, - Logger, -} from "@nestjs/common"; -import { ConfigService } from "../../config/config.service"; - -@Catch(HttpException) -export class OAuthExceptionFilter implements ExceptionFilter { - private errorKeys: Record<string, string> = { - access_denied: "access_denied", - expired_token: "expired_token", - }; - private readonly logger = new Logger(OAuthExceptionFilter.name); - - constructor(private config: ConfigService) {} - - catch(exception: HttpException, host: ArgumentsHost) { - const ctx = host.switchToHttp(); - const response = ctx.getResponse(); - const request = ctx.getRequest(); - - this.logger.error(exception.message); - this.logger.error( - "Request query: " + JSON.stringify(request.query, null, 2), - ); - - const key = this.errorKeys[request.query.error] || "default"; - - const url = new URL(`${this.config.get("general.appUrl")}/error`); - url.searchParams.set("redirect", "/account"); - url.searchParams.set("error", key); - - response.redirect(url.toString()); - } -} diff --git a/backend/src/oauth/guard/oauth.guard.ts b/backend/src/oauth/guard/oauth.guard.ts deleted file mode 100644 index 32d444f..0000000 --- a/backend/src/oauth/guard/oauth.guard.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { CanActivate, ExecutionContext, Injectable } from "@nestjs/common"; - -@Injectable() -export class OAuthGuard implements CanActivate { - constructor() {} - - canActivate(context: ExecutionContext): boolean { - const request = context.switchToHttp().getRequest(); - const provider = request.params.provider; - return request.query.state === request.cookies[`oauth_${provider}_state`]; - } -} diff --git a/backend/src/oauth/guard/provider.guard.ts b/backend/src/oauth/guard/provider.guard.ts deleted file mode 100644 index a115c73..0000000 --- a/backend/src/oauth/guard/provider.guard.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { - CanActivate, - ExecutionContext, - Inject, - Injectable, -} from "@nestjs/common"; -import { ConfigService } from "../../config/config.service"; - -@Injectable() -export class ProviderGuard implements CanActivate { - constructor( - private config: ConfigService, - @Inject("OAUTH_PLATFORMS") private platforms: string[], - ) {} - - canActivate(context: ExecutionContext): boolean { - const request = context.switchToHttp().getRequest(); - const provider = request.params.provider; - return ( - this.platforms.includes(provider) && - this.config.get(`oauth.${provider}-enabled`) - ); - } -} diff --git a/backend/src/oauth/oauth.controller.ts b/backend/src/oauth/oauth.controller.ts deleted file mode 100644 index bf3824e..0000000 --- a/backend/src/oauth/oauth.controller.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { - Controller, - Get, - Inject, - Param, - Post, - Query, - Req, - Res, - UseFilters, - UseGuards, -} from "@nestjs/common"; -import { User } from "@prisma/client"; -import { Request, Response } from "express"; -import { nanoid } from "nanoid"; -import { AuthService } from "../auth/auth.service"; -import { GetUser } from "../auth/decorator/getUser.decorator"; -import { JwtGuard } from "../auth/guard/jwt.guard"; -import { ConfigService } from "../config/config.service"; -import { OAuthCallbackDto } from "./dto/oauthCallback.dto"; -import { ErrorPageExceptionFilter } from "./filter/errorPageException.filter"; -import { OAuthGuard } from "./guard/oauth.guard"; -import { ProviderGuard } from "./guard/provider.guard"; -import { OAuthService } from "./oauth.service"; -import { OAuthProvider } from "./provider/oauthProvider.interface"; -import { OAuthExceptionFilter } from "./filter/oauthException.filter"; - -@Controller("oauth") -export class OAuthController { - constructor( - private authService: AuthService, - private oauthService: OAuthService, - private config: ConfigService, - @Inject("OAUTH_PROVIDERS") - private providers: Record<string, OAuthProvider<unknown>>, - ) {} - - @Get("available") - available() { - return this.oauthService.available(); - } - - @Get("status") - @UseGuards(JwtGuard) - async status(@GetUser() user: User) { - return this.oauthService.status(user); - } - - @Get("auth/:provider") - @UseGuards(ProviderGuard) - @UseFilters(ErrorPageExceptionFilter) - async auth( - @Param("provider") provider: string, - @Res({ passthrough: true }) response: Response, - ) { - const state = nanoid(16); - const url = await this.providers[provider].getAuthEndpoint(state); - response.cookie(`oauth_${provider}_state`, state, { sameSite: "lax" }); - response.redirect(url); - } - - @Get("callback/:provider") - @UseGuards(ProviderGuard, OAuthGuard) - @UseFilters(ErrorPageExceptionFilter, OAuthExceptionFilter) - async callback( - @Param("provider") provider: string, - @Query() query: OAuthCallbackDto, - @Req() request: Request, - @Res({ passthrough: true }) response: Response, - ) { - const oauthToken = await this.providers[provider].getToken(query); - const user = await this.providers[provider].getUserInfo(oauthToken, query); - const id = await this.authService.getIdOfCurrentUser(request); - - if (id) { - await this.oauthService.link( - id, - provider, - user.providerId, - user.providerUsername, - ); - response.redirect(this.config.get("general.appUrl") + "/account"); - } else { - const token: { - accessToken?: string; - refreshToken?: string; - loginToken?: string; - } = await this.oauthService.signIn(user, request.ip); - if (token.accessToken) { - this.authService.addTokensToResponse( - response, - token.refreshToken, - token.accessToken, - ); - response.redirect(this.config.get("general.appUrl")); - } else { - response.redirect( - this.config.get("general.appUrl") + `/auth/totp/${token.loginToken}`, - ); - } - } - } - - @Post("unlink/:provider") - @UseGuards(JwtGuard, ProviderGuard) - @UseFilters(ErrorPageExceptionFilter) - unlink(@GetUser() user: User, @Param("provider") provider: string) { - return this.oauthService.unlink(user, provider); - } -} diff --git a/backend/src/oauth/oauth.module.ts b/backend/src/oauth/oauth.module.ts deleted file mode 100644 index bdb22b1..0000000 --- a/backend/src/oauth/oauth.module.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { Module } from "@nestjs/common"; -import { OAuthController } from "./oauth.controller"; -import { OAuthService } from "./oauth.service"; -import { AuthModule } from "../auth/auth.module"; -import { GitHubProvider } from "./provider/github.provider"; -import { GoogleProvider } from "./provider/google.provider"; -import { OAuthProvider } from "./provider/oauthProvider.interface"; -import { OidcProvider } from "./provider/oidc.provider"; -import { DiscordProvider } from "./provider/discord.provider"; -import { MicrosoftProvider } from "./provider/microsoft.provider"; - -@Module({ - controllers: [OAuthController], - providers: [ - OAuthService, - GitHubProvider, - GoogleProvider, - MicrosoftProvider, - DiscordProvider, - OidcProvider, - { - provide: "OAUTH_PROVIDERS", - useFactory( - github: GitHubProvider, - google: GoogleProvider, - microsoft: MicrosoftProvider, - discord: DiscordProvider, - oidc: OidcProvider, - ): Record<string, OAuthProvider<unknown>> { - return { - github, - google, - microsoft, - discord, - oidc, - }; - }, - inject: [ - GitHubProvider, - GoogleProvider, - MicrosoftProvider, - DiscordProvider, - OidcProvider, - ], - }, - { - provide: "OAUTH_PLATFORMS", - useFactory(providers: Record<string, OAuthProvider<unknown>>): string[] { - return Object.keys(providers); - }, - inject: ["OAUTH_PROVIDERS"], - }, - ], - imports: [AuthModule], -}) -export class OAuthModule {} diff --git a/backend/src/oauth/oauth.service.ts b/backend/src/oauth/oauth.service.ts deleted file mode 100644 index 5d73df9..0000000 --- a/backend/src/oauth/oauth.service.ts +++ /dev/null @@ -1,193 +0,0 @@ -import { Inject, Injectable, Logger } from "@nestjs/common"; -import { User } from "@prisma/client"; -import { nanoid } from "nanoid"; -import { AuthService } from "../auth/auth.service"; -import { ConfigService } from "../config/config.service"; -import { PrismaService } from "../prisma/prisma.service"; -import { OAuthSignInDto } from "./dto/oauthSignIn.dto"; -import { ErrorPageException } from "./exceptions/errorPage.exception"; - -@Injectable() -export class OAuthService { - constructor( - private prisma: PrismaService, - private config: ConfigService, - private auth: AuthService, - @Inject("OAUTH_PLATFORMS") private platforms: string[], - ) {} - private readonly logger = new Logger(OAuthService.name); - - available(): string[] { - return this.platforms - .map((platform) => [ - platform, - this.config.get(`oauth.${platform}-enabled`), - ]) - .filter(([_, enabled]) => enabled) - .map(([platform, _]) => platform); - } - - async status(user: User) { - const oauthUsers = await this.prisma.oAuthUser.findMany({ - select: { - provider: true, - providerUsername: true, - }, - where: { - userId: user.id, - }, - }); - return Object.fromEntries(oauthUsers.map((u) => [u.provider, u])); - } - - async signIn(user: OAuthSignInDto, ip: string) { - const oauthUser = await this.prisma.oAuthUser.findFirst({ - where: { - provider: user.provider, - providerUserId: user.providerId, - }, - }); - if (oauthUser) { - await this.updateIsAdmin(user); - const updatedUser = await this.prisma.user.findFirst({ - where: { - email: user.email, - }, - }); - this.logger.log(`Successful login for user ${user.email} from IP ${ip}`); - return this.auth.generateToken(updatedUser, true); - } - - return this.signUp(user, ip); - } - - async link( - userId: string, - provider: string, - providerUserId: string, - providerUsername: string, - ) { - const oauthUser = await this.prisma.oAuthUser.findFirst({ - where: { - provider, - providerUserId, - }, - }); - if (oauthUser) { - throw new ErrorPageException("already_linked", "/account", [ - `provider_${provider}`, - ]); - } - - await this.prisma.oAuthUser.create({ - data: { - userId, - provider, - providerUsername, - providerUserId, - }, - }); - } - - async unlink(user: User, provider: string) { - const oauthUser = await this.prisma.oAuthUser.findFirst({ - where: { - userId: user.id, - provider, - }, - }); - if (oauthUser) { - await this.prisma.oAuthUser.delete({ - where: { - id: oauthUser.id, - }, - }); - } else { - throw new ErrorPageException("not_linked", "/account", [provider]); - } - } - - private async getAvailableUsername(preferredUsername: string) { - // only remove + and - from preferred username for now (maybe not enough) - let username = preferredUsername.replace(/[+-]/g, "").substring(0, 20); - while (true) { - const user = await this.prisma.user.findFirst({ - where: { - username: username, - }, - }); - if (user) { - username = username + "_" + nanoid(10).replaceAll("-", ""); - } else { - return username; - } - } - } - - private async signUp(user: OAuthSignInDto, ip: string) { - // register - if (!this.config.get("oauth.allowRegistration")) { - throw new ErrorPageException("no_user", "/auth/signIn", [ - `provider_${user.provider}`, - ]); - } - - if (!user.email) { - throw new ErrorPageException("no_email", "/auth/signIn", [ - `provider_${user.provider}`, - ]); - } - - const existingUser: User = await this.prisma.user.findFirst({ - where: { - email: user.email, - }, - }); - - if (existingUser) { - await this.prisma.oAuthUser.create({ - data: { - provider: user.provider, - providerUserId: user.providerId.toString(), - providerUsername: user.providerUsername, - userId: existingUser.id, - }, - }); - await this.updateIsAdmin(user); - return this.auth.generateToken(existingUser, true); - } - - const result = await this.auth.signUp( - { - email: user.email, - username: await this.getAvailableUsername(user.providerUsername), - password: null, - }, - ip, - user.isAdmin, - ); - - await this.prisma.oAuthUser.create({ - data: { - provider: user.provider, - providerUserId: user.providerId.toString(), - providerUsername: user.providerUsername, - userId: result.user.id, - }, - }); - - return result; - } - - private async updateIsAdmin(user: OAuthSignInDto) { - if ("isAdmin" in user) - await this.prisma.user.update({ - where: { - email: user.email, - }, - data: { - isAdmin: user.isAdmin, - }, - }); - } -} diff --git a/backend/src/oauth/provider/discord.provider.ts b/backend/src/oauth/provider/discord.provider.ts deleted file mode 100644 index 717cd8e..0000000 --- a/backend/src/oauth/provider/discord.provider.ts +++ /dev/null @@ -1,135 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { ConfigService } from "../../config/config.service"; -import { OAuthCallbackDto } from "../dto/oauthCallback.dto"; -import { OAuthSignInDto } from "../dto/oauthSignIn.dto"; -import { ErrorPageException } from "../exceptions/errorPage.exception"; -import { OAuthProvider, OAuthToken } from "./oauthProvider.interface"; -@Injectable() -export class DiscordProvider implements OAuthProvider<DiscordToken> { - constructor(private config: ConfigService) {} - - getAuthEndpoint(state: string): Promise<string> { - let scope = "identify email"; - if (this.config.get("oauth.discord-limitedGuild")) { - scope += " guilds"; - } - return Promise.resolve( - "https://discord.com/api/oauth2/authorize?" + - new URLSearchParams({ - client_id: this.config.get("oauth.discord-clientId"), - redirect_uri: - this.config.get("general.appUrl") + "/api/oauth/callback/discord", - response_type: "code", - state, - scope, - }).toString(), - ); - } - - private getAuthorizationHeader() { - return ( - "Basic " + - Buffer.from( - this.config.get("oauth.discord-clientId") + - ":" + - this.config.get("oauth.discord-clientSecret"), - ).toString("base64") - ); - } - - async getToken(query: OAuthCallbackDto): Promise<OAuthToken<DiscordToken>> { - const res = await fetch("https://discord.com/api/v10/oauth2/token", { - method: "post", - headers: { - "Content-Type": "application/x-www-form-urlencoded", - Authorization: this.getAuthorizationHeader(), - }, - body: new URLSearchParams({ - code: query.code, - grant_type: "authorization_code", - redirect_uri: - this.config.get("general.appUrl") + "/api/oauth/callback/discord", - }), - }); - const token = (await res.json()) as DiscordToken; - return { - accessToken: token.access_token, - refreshToken: token.refresh_token, - expiresIn: token.expires_in, - scope: token.scope, - tokenType: token.token_type, - rawToken: token, - }; - } - - async getUserInfo(token: OAuthToken<DiscordToken>): Promise<OAuthSignInDto> { - const res = await fetch("https://discord.com/api/v10/users/@me", { - method: "get", - headers: { - Accept: "application/json", - Authorization: `${token.tokenType || "Bearer"} ${token.accessToken}`, - }, - }); - const user = (await res.json()) as DiscordUser; - if (user.verified === false) { - throw new ErrorPageException("unverified_account", undefined, [ - "provider_discord", - ]); - } - - const guild = this.config.get("oauth.discord-limitedGuild"); - if (guild) { - await this.checkLimitedGuild(token, guild); - } - - return { - provider: "discord", - providerId: user.id, - providerUsername: user.global_name ?? user.username, - email: user.email, - }; - } - - async checkLimitedGuild(token: OAuthToken<DiscordToken>, guildId: string) { - try { - const res = await fetch("https://discord.com/api/v10/users/@me/guilds", { - method: "get", - headers: { - Accept: "application/json", - Authorization: `${token.tokenType || "Bearer"} ${token.accessToken}`, - }, - }); - const guilds = (await res.json()) as DiscordPartialGuild[]; - if (!guilds.some((guild) => guild.id === guildId)) { - throw new ErrorPageException("user_not_allowed"); - } - } catch { - throw new ErrorPageException("user_not_allowed"); - } - } -} - -export interface DiscordToken { - access_token: string; - token_type: string; - expires_in: number; - refresh_token: string; - scope: string; -} - -export interface DiscordUser { - id: string; - username: string; - global_name: string; - email: string; - verified: boolean; -} - -export interface DiscordPartialGuild { - id: string; - name: string; - icon: string; - owner: boolean; - permissions: string; - features: string[]; -} diff --git a/backend/src/oauth/provider/genericOidc.provider.ts b/backend/src/oauth/provider/genericOidc.provider.ts deleted file mode 100644 index e1f211d..0000000 --- a/backend/src/oauth/provider/genericOidc.provider.ts +++ /dev/null @@ -1,281 +0,0 @@ -import { Logger } from "@nestjs/common"; -import { ConfigService } from "../../config/config.service"; -import { JwtService } from "@nestjs/jwt"; -import { Cache } from "cache-manager"; -import * as jmespath from "jmespath"; -import { nanoid } from "nanoid"; -import { OAuthCallbackDto } from "../dto/oauthCallback.dto"; -import { OAuthProvider, OAuthToken } from "./oauthProvider.interface"; -import { OAuthSignInDto } from "../dto/oauthSignIn.dto"; -import { ErrorPageException } from "../exceptions/errorPage.exception"; - -export abstract class GenericOidcProvider implements OAuthProvider<OidcToken> { - protected discoveryUri: string; - private configuration: OidcConfigurationCache; - private jwk: OidcJwkCache; - private logger: Logger = new Logger( - Object.getPrototypeOf(this).constructor.name, - ); - - protected constructor( - protected name: string, - protected keyOfConfigUpdateEvents: string[], - protected config: ConfigService, - protected jwtService: JwtService, - protected cache: Cache, - ) { - this.discoveryUri = this.getDiscoveryUri(); - this.config.addListener("update", (key: string) => { - if (this.keyOfConfigUpdateEvents.includes(key)) { - this.deinit(); - this.discoveryUri = this.getDiscoveryUri(); - } - }); - } - - protected getRedirectUri(): string { - return `${this.config.get("general.appUrl")}/api/oauth/callback/${ - this.name - }`; - } - - async getConfiguration(): Promise<OidcConfiguration> { - if (!this.configuration || this.configuration.expires < Date.now()) { - await this.fetchConfiguration(); - } - return this.configuration.data; - } - - async getJwk(): Promise<OidcJwk[]> { - if (!this.jwk || this.jwk.expires < Date.now()) { - await this.fetchJwk(); - } - return this.jwk.data; - } - - async getAuthEndpoint(state: string) { - const configuration = await this.getConfiguration(); - const endpoint = configuration.authorization_endpoint; - - const nonce = nanoid(); - await this.cache.set( - `oauth-${this.name}-nonce-${state}`, - nonce, - 1000 * 60 * 5, - ); - - return ( - endpoint + - "?" + - new URLSearchParams({ - client_id: this.config.get(`oauth.${this.name}-clientId`), - response_type: "code", - scope: "openid profile email", - redirect_uri: this.getRedirectUri(), - state, - nonce, - }).toString() - ); - } - - async getToken(query: OAuthCallbackDto): Promise<OAuthToken<OidcToken>> { - const configuration = await this.getConfiguration(); - const endpoint = configuration.token_endpoint; - const res = await fetch(endpoint, { - method: "POST", - headers: { - "Content-Type": "application/x-www-form-urlencoded", - }, - body: new URLSearchParams({ - client_id: this.config.get(`oauth.${this.name}-clientId`), - client_secret: this.config.get(`oauth.${this.name}-clientSecret`), - grant_type: "authorization_code", - code: query.code, - redirect_uri: this.getRedirectUri(), - }).toString(), - }); - const token = (await res.json()) as OidcToken; - return { - accessToken: token.access_token, - expiresIn: token.expires_in, - idToken: token.id_token, - refreshToken: token.refresh_token, - tokenType: token.token_type, - rawToken: token, - }; - } - - async getUserInfo( - token: OAuthToken<OidcToken>, - query: OAuthCallbackDto, - claim?: string, - roleConfig?: { - path?: string; - generalAccess?: string; - adminAccess?: string; - }, - ): Promise<OAuthSignInDto> { - const idTokenData = this.decodeIdToken(token.idToken); - // maybe it's not necessary to verify the id token since it's directly obtained from the provider - - const key = `oauth-${this.name}-nonce-${query.state}`; - const nonce = await this.cache.get(key); - await this.cache.del(key); - if (nonce !== idTokenData.nonce) { - this.logger.error( - `Invalid nonce. Expected ${nonce}, but got ${idTokenData.nonce}`, - ); - throw new ErrorPageException("invalid_token"); - } - - const username = claim - ? idTokenData[claim] - : idTokenData.preferred_username || - idTokenData.name || - idTokenData.nickname; - - let isAdmin: boolean; - - if (roleConfig?.path) { - // A path to read roles from the token is configured - let roles: string[] | null; - try { - roles = jmespath.search(idTokenData, roleConfig.path); - } catch (e) { - roles = null; - } - if (Array.isArray(roles)) { - // Roles are found in the token - if ( - roleConfig.generalAccess && - !roles.includes(roleConfig.generalAccess) - ) { - // Role for general access is configured and the user does not have it - this.logger.error( - `User roles ${roles} do not include ${roleConfig.generalAccess}`, - ); - throw new ErrorPageException("user_not_allowed"); - } - if (roleConfig.adminAccess) { - // Role for admin access is configured - isAdmin = roles.includes(roleConfig.adminAccess); - } - } else { - this.logger.error( - `Roles not found at path ${roleConfig.path} in ID Token ${JSON.stringify( - idTokenData, - undefined, - 2, - )}`, - ); - throw new ErrorPageException("user_not_allowed"); - } - } - - if (!username) { - this.logger.error( - `Can not get username from ID Token ${JSON.stringify( - idTokenData, - undefined, - 2, - )}`, - ); - throw new ErrorPageException("cannot_get_user_info", undefined, [ - `provider_${this.name}`, - ]); - } - - return { - provider: this.name as any, - email: idTokenData.email, - providerId: idTokenData.sub, - providerUsername: username, - ...(isAdmin !== undefined && { isAdmin }), - }; - } - - protected abstract getDiscoveryUri(): string; - - private async fetchConfiguration(): Promise<void> { - const res = await fetch(this.discoveryUri); - const expires = res.headers.has("expires") - ? new Date(res.headers.get("expires")).getTime() - : Date.now() + 1000 * 60 * 60 * 24; - this.configuration = { - expires, - data: (await res.json()) as OidcConfiguration, - }; - } - - private async fetchJwk(): Promise<void> { - const configuration = await this.getConfiguration(); - const res = await fetch(configuration.jwks_uri); - const expires = res.headers.has("expires") - ? new Date(res.headers.get("expires")).getTime() - : Date.now() + 1000 * 60 * 60 * 24; - this.jwk = { - expires, - data: (await res.json())["keys"], - }; - } - - private deinit() { - this.discoveryUri = undefined; - this.configuration = undefined; - this.jwk = undefined; - } - - private decodeIdToken(idToken: string): OidcIdToken { - return this.jwtService.decode(idToken) as OidcIdToken; - } -} - -export interface OidcCache<T> { - expires: number; - data: T; -} - -export interface OidcConfiguration { - issuer: string; - authorization_endpoint: string; - token_endpoint: string; - userinfo_endpoint?: string; - jwks_uri: string; - response_types_supported: string[]; - id_token_signing_alg_values_supported: string[]; - scopes_supported?: string[]; - claims_supported?: string[]; -} - -export interface OidcJwk { - e: string; - alg: string; - kid: string; - use: string; - kty: string; - n: string; -} - -export type OidcConfigurationCache = OidcCache<OidcConfiguration>; - -export type OidcJwkCache = OidcCache<OidcJwk[]>; - -export interface OidcToken { - access_token: string; - refresh_token: string; - token_type: string; - expires_in: number; - id_token: string; -} - -export interface OidcIdToken { - iss: string; - sub: string; - exp: number; - iat: number; - email: string; - name: string; - nickname: string; - preferred_username: string; - nonce: string; -} diff --git a/backend/src/oauth/provider/github.provider.ts b/backend/src/oauth/provider/github.provider.ts deleted file mode 100644 index 1c9eb87..0000000 --- a/backend/src/oauth/provider/github.provider.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { ConfigService } from "../../config/config.service"; -import { OAuthCallbackDto } from "../dto/oauthCallback.dto"; -import { OAuthSignInDto } from "../dto/oauthSignIn.dto"; -import { ErrorPageException } from "../exceptions/errorPage.exception"; -import { OAuthProvider, OAuthToken } from "./oauthProvider.interface"; - -@Injectable() -export class GitHubProvider implements OAuthProvider<GitHubToken> { - constructor(private config: ConfigService) {} - - getAuthEndpoint(state: string): Promise<string> { - return Promise.resolve( - "https://github.com/login/oauth/authorize?" + - new URLSearchParams({ - client_id: this.config.get("oauth.github-clientId"), - redirect_uri: - this.config.get("general.appUrl") + "/api/oauth/callback/github", - state: state, - scope: "user:email", - }).toString(), - ); - } - - async getToken(query: OAuthCallbackDto): Promise<OAuthToken<GitHubToken>> { - const res = await fetch( - "https://github.com/login/oauth/access_token?" + - new URLSearchParams({ - client_id: this.config.get("oauth.github-clientId"), - client_secret: this.config.get("oauth.github-clientSecret"), - code: query.code, - }).toString(), - { - method: "post", - headers: { - Accept: "application/json", - }, - }, - ); - const token = (await res.json()) as GitHubToken; - return { - accessToken: token.access_token, - tokenType: token.token_type, - scope: token.scope, - rawToken: token, - }; - } - - async getUserInfo(token: OAuthToken<GitHubToken>): Promise<OAuthSignInDto> { - if (!token.scope.includes("user:email")) { - throw new ErrorPageException("no_email", undefined, ["provider_github"]); - } - const user = await this.getGitHubUser(token); - const email = await this.getGitHubEmail(token); - if (!email) { - throw new ErrorPageException("no_email", undefined, ["provider_github"]); - } - - return { - provider: "github", - providerId: user.id.toString(), - providerUsername: user.name ?? user.login, - email, - }; - } - - private async getGitHubUser( - token: OAuthToken<GitHubToken>, - ): Promise<GitHubUser> { - const res = await fetch("https://api.github.com/user", { - headers: { - Accept: "application/vnd.github+json", - Authorization: `${token.tokenType ?? "Bearer"} ${token.accessToken}`, - }, - }); - return (await res.json()) as GitHubUser; - } - - private async getGitHubEmail( - token: OAuthToken<GitHubToken>, - ): Promise<string | undefined> { - const res = await fetch("https://api.github.com/user/public_emails", { - headers: { - Accept: "application/vnd.github+json", - Authorization: `${token.tokenType ?? "Bearer"} ${token.accessToken}`, - }, - }); - const emails = (await res.json()) as GitHubEmail[]; - return emails.find((e) => e.primary && e.verified)?.email; - } -} - -export interface GitHubToken { - access_token: string; - token_type: string; - scope: string; -} - -export interface GitHubUser { - login: string; - id: number; - name?: string; - email?: string; // this filed seems only return null -} - -export interface GitHubEmail { - email: string; - primary: boolean; - verified: boolean; - visibility: string | null; -} diff --git a/backend/src/oauth/provider/google.provider.ts b/backend/src/oauth/provider/google.provider.ts deleted file mode 100644 index 5c24dff..0000000 --- a/backend/src/oauth/provider/google.provider.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { GenericOidcProvider } from "./genericOidc.provider"; -import { ConfigService } from "../../config/config.service"; -import { JwtService } from "@nestjs/jwt"; -import { Inject, Injectable } from "@nestjs/common"; -import { CACHE_MANAGER } from "@nestjs/cache-manager"; -import { Cache } from "cache-manager"; - -@Injectable() -export class GoogleProvider extends GenericOidcProvider { - constructor( - config: ConfigService, - jwtService: JwtService, - @Inject(CACHE_MANAGER) cache: Cache, - ) { - super("google", ["oauth.google-enabled"], config, jwtService, cache); - } - - protected getDiscoveryUri(): string { - return "https://accounts.google.com/.well-known/openid-configuration"; - } -} diff --git a/backend/src/oauth/provider/microsoft.provider.ts b/backend/src/oauth/provider/microsoft.provider.ts deleted file mode 100644 index 42262b3..0000000 --- a/backend/src/oauth/provider/microsoft.provider.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { GenericOidcProvider } from "./genericOidc.provider"; -import { ConfigService } from "../../config/config.service"; -import { JwtService } from "@nestjs/jwt"; -import { Inject, Injectable } from "@nestjs/common"; -import { CACHE_MANAGER } from "@nestjs/cache-manager"; -import { Cache } from "cache-manager"; - -@Injectable() -export class MicrosoftProvider extends GenericOidcProvider { - constructor( - config: ConfigService, - jwtService: JwtService, - @Inject(CACHE_MANAGER) cache: Cache, - ) { - super( - "microsoft", - ["oauth.microsoft-enabled", "oauth.microsoft-tenant"], - config, - jwtService, - cache, - ); - } - - protected getDiscoveryUri(): string { - return `https://login.microsoftonline.com/${this.config.get( - "oauth.microsoft-tenant", - )}/v2.0/.well-known/openid-configuration`; - } -} diff --git a/backend/src/oauth/provider/oauthProvider.interface.ts b/backend/src/oauth/provider/oauthProvider.interface.ts deleted file mode 100644 index 4ede099..0000000 --- a/backend/src/oauth/provider/oauthProvider.interface.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { OAuthCallbackDto } from "../dto/oauthCallback.dto"; -import { OAuthSignInDto } from "../dto/oauthSignIn.dto"; - -/** - * @typeParam T - type of token - * @typeParam C - type of callback query - */ -export interface OAuthProvider<T, C = OAuthCallbackDto> { - getAuthEndpoint(state: string): Promise<string>; - - getToken(query: C): Promise<OAuthToken<T>>; - - getUserInfo(token: OAuthToken<T>, query: C): Promise<OAuthSignInDto>; -} - -export interface OAuthToken<T> { - accessToken: string; - expiresIn?: number; - refreshToken?: string; - tokenType?: string; - scope?: string; - idToken?: string; - rawToken: T; -} diff --git a/backend/src/oauth/provider/oidc.provider.ts b/backend/src/oauth/provider/oidc.provider.ts deleted file mode 100644 index 09ac5a0..0000000 --- a/backend/src/oauth/provider/oidc.provider.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { GenericOidcProvider, OidcToken } from "./genericOidc.provider"; -import { Inject, Injectable } from "@nestjs/common"; -import { ConfigService } from "../../config/config.service"; -import { JwtService } from "@nestjs/jwt"; -import { CACHE_MANAGER } from "@nestjs/cache-manager"; -import { Cache } from "cache-manager"; -import { OAuthCallbackDto } from "../dto/oauthCallback.dto"; -import { OAuthSignInDto } from "../dto/oauthSignIn.dto"; -import { OAuthToken } from "./oauthProvider.interface"; - -@Injectable() -export class OidcProvider extends GenericOidcProvider { - constructor( - config: ConfigService, - jwtService: JwtService, - @Inject(CACHE_MANAGER) protected cache: Cache, - ) { - super( - "oidc", - ["oauth.oidc-enabled", "oauth.oidc-discoveryUri"], - config, - jwtService, - cache, - ); - } - - protected getDiscoveryUri(): string { - return this.config.get("oauth.oidc-discoveryUri"); - } - - getUserInfo( - token: OAuthToken<OidcToken>, - query: OAuthCallbackDto, - _?: string, - ): Promise<OAuthSignInDto> { - const claim = this.config.get("oauth.oidc-usernameClaim") || undefined; - const rolePath = this.config.get("oauth.oidc-rolePath") || undefined; - const roleGeneralAccess = - this.config.get("oauth.oidc-roleGeneralAccess") || undefined; - const roleAdminAccess = - this.config.get("oauth.oidc-roleAdminAccess") || undefined; - return super.getUserInfo(token, query, claim, { - path: rolePath, - generalAccess: roleGeneralAccess, - adminAccess: roleAdminAccess, - }); - } -} diff --git a/backend/src/prisma/prisma.module.ts b/backend/src/prisma/prisma.module.ts deleted file mode 100644 index 254ae2e..0000000 --- a/backend/src/prisma/prisma.module.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Global, Module } from "@nestjs/common"; -import { PrismaService } from "./prisma.service"; - -@Global() -@Module({ providers: [PrismaService], exports: [PrismaService] }) -export class PrismaModule {} diff --git a/backend/src/prisma/prisma.service.ts b/backend/src/prisma/prisma.service.ts deleted file mode 100644 index 7295e1e..0000000 --- a/backend/src/prisma/prisma.service.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { PrismaClient } from "@prisma/client"; -import { DATABASE_URL } from "../constants"; - -@Injectable() -export class PrismaService extends PrismaClient { - constructor() { - super({ - datasources: { - db: { - url: DATABASE_URL, - }, - }, - }); - super.$connect().then(() => console.info("Connected to the database")); - } -} diff --git a/backend/src/reverseShare/dto/createReverseShare.dto.ts b/backend/src/reverseShare/dto/createReverseShare.dto.ts deleted file mode 100644 index f73c8d2..0000000 --- a/backend/src/reverseShare/dto/createReverseShare.dto.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { IsBoolean, IsString, Max, Min } from "class-validator"; - -export class CreateReverseShareDTO { - @IsBoolean() - sendEmailNotification: boolean; - - @IsString() - maxShareSize: string; - - @IsString() - shareExpiration: string; - - @Min(1) - @Max(1000) - maxUseCount: number; - - @IsBoolean() - simplified: boolean; - - @IsBoolean() - publicAccess: boolean; -} diff --git a/backend/src/reverseShare/dto/reverseShare.dto.ts b/backend/src/reverseShare/dto/reverseShare.dto.ts deleted file mode 100644 index ce94933..0000000 --- a/backend/src/reverseShare/dto/reverseShare.dto.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Expose, plainToClass } from "class-transformer"; - -export class ReverseShareDTO { - @Expose() - id: string; - - @Expose() - maxShareSize: string; - - @Expose() - shareExpiration: Date; - - @Expose() - token: string; - - @Expose() - simplified: boolean; - - from(partial: Partial<ReverseShareDTO>) { - return plainToClass(ReverseShareDTO, partial, { - excludeExtraneousValues: true, - }); - } -} diff --git a/backend/src/reverseShare/dto/reverseShareTokenWithShares.ts b/backend/src/reverseShare/dto/reverseShareTokenWithShares.ts deleted file mode 100644 index b4243d1..0000000 --- a/backend/src/reverseShare/dto/reverseShareTokenWithShares.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { OmitType } from "@nestjs/swagger"; -import { Expose, plainToClass, Type } from "class-transformer"; -import { MyShareDTO } from "src/share/dto/myShare.dto"; -import { ReverseShareDTO } from "./reverseShare.dto"; - -export class ReverseShareTokenWithShares extends OmitType(ReverseShareDTO, [ - "shareExpiration", -] as const) { - @Expose() - shareExpiration: Date; - - @Expose() - @Type(() => OmitType(MyShareDTO, ["recipients", "hasPassword"] as const)) - shares: Omit< - MyShareDTO, - "recipients" | "files" | "from" | "fromList" | "hasPassword" | "size" - >[]; - - @Expose() - remainingUses: number; - - fromList(partial: Partial<ReverseShareTokenWithShares>[]) { - return partial.map((part) => - plainToClass(ReverseShareTokenWithShares, part, { - excludeExtraneousValues: true, - }), - ); - } -} diff --git a/backend/src/reverseShare/guards/reverseShareOwner.guard.ts b/backend/src/reverseShare/guards/reverseShareOwner.guard.ts deleted file mode 100644 index 662742e..0000000 --- a/backend/src/reverseShare/guards/reverseShareOwner.guard.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CanActivate, ExecutionContext, Injectable } from "@nestjs/common"; -import { User } from "@prisma/client"; -import { Request } from "express"; -import { PrismaService } from "src/prisma/prisma.service"; - -@Injectable() -export class ReverseShareOwnerGuard implements CanActivate { - constructor(private prisma: PrismaService) {} - - async canActivate(context: ExecutionContext) { - const request: Request = context.switchToHttp().getRequest(); - const { reverseShareId } = request.params; - - const reverseShare = await this.prisma.reverseShare.findUnique({ - where: { id: reverseShareId }, - }); - - if (!reverseShare) return false; - - return reverseShare.creatorId == (request.user as User).id; - } -} diff --git a/backend/src/reverseShare/reverseShare.controller.ts b/backend/src/reverseShare/reverseShare.controller.ts deleted file mode 100644 index 3835c68..0000000 --- a/backend/src/reverseShare/reverseShare.controller.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { - Body, - Controller, - Delete, - Get, - NotFoundException, - Param, - Post, - UseGuards, -} from "@nestjs/common"; -import { Throttle } from "@nestjs/throttler"; -import { User } from "@prisma/client"; -import { GetUser } from "src/auth/decorator/getUser.decorator"; -import { JwtGuard } from "src/auth/guard/jwt.guard"; -import { ConfigService } from "src/config/config.service"; -import { CreateReverseShareDTO } from "./dto/createReverseShare.dto"; -import { ReverseShareDTO } from "./dto/reverseShare.dto"; -import { ReverseShareTokenWithShares } from "./dto/reverseShareTokenWithShares"; -import { ReverseShareOwnerGuard } from "./guards/reverseShareOwner.guard"; -import { ReverseShareService } from "./reverseShare.service"; - -@Controller("reverseShares") -export class ReverseShareController { - constructor( - private reverseShareService: ReverseShareService, - private config: ConfigService, - ) {} - - @Post() - @UseGuards(JwtGuard) - async create(@Body() body: CreateReverseShareDTO, @GetUser() user: User) { - const token = await this.reverseShareService.create(body, user.id); - - const link = `${this.config.get("general.appUrl")}/upload/${token}`; - - return { token, link }; - } - - @Throttle({ - default: { - limit: 20, - ttl: 60, - }, - }) - @Get(":reverseShareToken") - async getByToken(@Param("reverseShareToken") reverseShareToken: string) { - const isValid = await this.reverseShareService.isValid(reverseShareToken); - - if (!isValid) throw new NotFoundException("Reverse share token not found"); - - return new ReverseShareDTO().from( - await this.reverseShareService.getByToken(reverseShareToken), - ); - } - - @Get() - @UseGuards(JwtGuard) - async getAllByUser(@GetUser() user: User) { - return new ReverseShareTokenWithShares().fromList( - await this.reverseShareService.getAllByUser(user.id), - ); - } - - @Delete(":reverseShareId") - @UseGuards(JwtGuard, ReverseShareOwnerGuard) - async remove(@Param("reverseShareId") id: string) { - await this.reverseShareService.remove(id); - } -} diff --git a/backend/src/reverseShare/reverseShare.module.ts b/backend/src/reverseShare/reverseShare.module.ts deleted file mode 100644 index 75649a8..0000000 --- a/backend/src/reverseShare/reverseShare.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { forwardRef, Module } from "@nestjs/common"; -import { FileModule } from "src/file/file.module"; -import { ReverseShareController } from "./reverseShare.controller"; -import { ReverseShareService } from "./reverseShare.service"; - -@Module({ - imports: [forwardRef(() => FileModule)], - controllers: [ReverseShareController], - providers: [ReverseShareService], - exports: [ReverseShareService], -}) -export class ReverseShareModule {} diff --git a/backend/src/reverseShare/reverseShare.service.ts b/backend/src/reverseShare/reverseShare.service.ts deleted file mode 100644 index 1470035..0000000 --- a/backend/src/reverseShare/reverseShare.service.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { BadRequestException, Injectable } from "@nestjs/common"; -import * as moment from "moment"; -import { ConfigService } from "src/config/config.service"; -import { FileService } from "src/file/file.service"; -import { PrismaService } from "src/prisma/prisma.service"; -import { parseRelativeDateToAbsolute } from "src/utils/date.util"; -import { CreateReverseShareDTO } from "./dto/createReverseShare.dto"; - -@Injectable() -export class ReverseShareService { - constructor( - private config: ConfigService, - private prisma: PrismaService, - private fileService: FileService, - ) {} - - async create(data: CreateReverseShareDTO, creatorId: string) { - // Parse date string to date - const expirationDate = moment() - .add( - data.shareExpiration.split("-")[0], - data.shareExpiration.split( - "-", - )[1] as moment.unitOfTime.DurationConstructor, - ) - .toDate(); - - const parsedExpiration = parseRelativeDateToAbsolute(data.shareExpiration); - if ( - this.config.get("share.maxExpiration") !== 0 && - parsedExpiration > - moment().add(this.config.get("share.maxExpiration"), "hours").toDate() - ) { - throw new BadRequestException( - "Expiration date exceeds maximum expiration date", - ); - } - - const globalMaxShareSize = this.config.get("share.maxSize"); - - if (globalMaxShareSize < data.maxShareSize) - throw new BadRequestException( - `Max share size can't be greater than ${globalMaxShareSize} bytes.`, - ); - - const reverseShare = await this.prisma.reverseShare.create({ - data: { - shareExpiration: expirationDate, - remainingUses: data.maxUseCount, - maxShareSize: data.maxShareSize, - sendEmailNotification: data.sendEmailNotification, - simplified: data.simplified, - publicAccess: data.publicAccess, - creatorId, - }, - }); - - return reverseShare.token; - } - - async getByToken(reverseShareToken?: string) { - if (!reverseShareToken) return null; - - const reverseShare = await this.prisma.reverseShare.findUnique({ - where: { token: reverseShareToken }, - }); - - return reverseShare; - } - - async getAllByUser(userId: string) { - const reverseShares = await this.prisma.reverseShare.findMany({ - where: { - creatorId: userId, - shareExpiration: { gt: new Date() }, - }, - orderBy: { - shareExpiration: "desc", - }, - include: { shares: { include: { creator: true } } }, - }); - - return reverseShares; - } - - async isValid(reverseShareToken: string) { - const reverseShare = await this.prisma.reverseShare.findUnique({ - where: { token: reverseShareToken }, - }); - - if (!reverseShare) return false; - - const isExpired = new Date() > reverseShare.shareExpiration; - const remainingUsesExceeded = reverseShare.remainingUses <= 0; - - return !(isExpired || remainingUsesExceeded); - } - - async remove(id: string) { - const shares = await this.prisma.share.findMany({ - where: { reverseShare: { id } }, - }); - - for (const share of shares) { - await this.prisma.share.delete({ where: { id: share.id } }); - await this.fileService.deleteAllFiles(share.id); - } - - await this.prisma.reverseShare.delete({ where: { id } }); - } -} diff --git a/backend/src/share/dto/adminShare.dto.ts b/backend/src/share/dto/adminShare.dto.ts deleted file mode 100644 index 4b9ecc2..0000000 --- a/backend/src/share/dto/adminShare.dto.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { OmitType } from "@nestjs/swagger"; -import { Expose, plainToClass } from "class-transformer"; -import { ShareDTO } from "./share.dto"; - -export class AdminShareDTO extends OmitType(ShareDTO, [ - "files", - "from", - "fromList", -] as const) { - @Expose() - views: number; - - @Expose() - createdAt: Date; - - from(partial: Partial<AdminShareDTO>) { - return plainToClass(AdminShareDTO, partial, { - excludeExtraneousValues: true, - }); - } - - fromList(partial: Partial<AdminShareDTO>[]) { - return partial.map((part) => - plainToClass(AdminShareDTO, part, { excludeExtraneousValues: true }), - ); - } -} diff --git a/backend/src/share/dto/createShare.dto.ts b/backend/src/share/dto/createShare.dto.ts deleted file mode 100644 index 479b964..0000000 --- a/backend/src/share/dto/createShare.dto.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Type } from "class-transformer"; -import { - IsEmail, - IsOptional, - IsString, - Length, - Matches, - MaxLength, - ValidateNested, -} from "class-validator"; -import { ShareSecurityDTO } from "./shareSecurity.dto"; - -export class CreateShareDTO { - @IsString() - @Matches("^[a-zA-Z0-9_-]*$", undefined, { - message: "ID can only contain letters, numbers, underscores and hyphens", - }) - @Length(3, 50) - id: string; - - @Length(3, 30) - @IsOptional() - name: string; - - @IsString() - expiration: string; - - @MaxLength(512) - @IsOptional() - description: string; - - @IsEmail({}, { each: true }) - recipients: string[]; - - @ValidateNested() - @Type(() => ShareSecurityDTO) - security: ShareSecurityDTO; -} diff --git a/backend/src/share/dto/myShare.dto.ts b/backend/src/share/dto/myShare.dto.ts deleted file mode 100644 index e548da5..0000000 --- a/backend/src/share/dto/myShare.dto.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Expose, plainToClass, Type } from "class-transformer"; -import { ShareDTO } from "./share.dto"; -import { FileDTO } from "../../file/dto/file.dto"; -import { OmitType } from "@nestjs/swagger"; - -export class MyShareDTO extends OmitType(ShareDTO, [ - "files", - "from", - "fromList", -] as const) { - @Expose() - views: number; - - @Expose() - createdAt: Date; - - @Expose() - recipients: string[]; - - @Expose() - @Type(() => OmitType(FileDTO, ["share", "from"] as const)) - files: Omit<FileDTO, "share" | "from">[]; - - from(partial: Partial<MyShareDTO>) { - return plainToClass(MyShareDTO, partial, { excludeExtraneousValues: true }); - } - - fromList(partial: Partial<MyShareDTO>[]) { - return partial.map((part) => - plainToClass(MyShareDTO, part, { excludeExtraneousValues: true }), - ); - } -} diff --git a/backend/src/share/dto/share.dto.ts b/backend/src/share/dto/share.dto.ts deleted file mode 100644 index daf471c..0000000 --- a/backend/src/share/dto/share.dto.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { Expose, plainToClass, Type } from "class-transformer"; -import { FileDTO } from "src/file/dto/file.dto"; -import { PublicUserDTO } from "src/user/dto/publicUser.dto"; - -export class ShareDTO { - @Expose() - id: string; - - @Expose() - name?: string; - - @Expose() - expiration: Date; - - @Expose() - @Type(() => FileDTO) - files: FileDTO[]; - - @Expose() - @Type(() => PublicUserDTO) - creator: PublicUserDTO; - - @Expose() - description: string; - - @Expose() - hasPassword: boolean; - - @Expose() - size: number; - - from(partial: Partial<ShareDTO>) { - return plainToClass(ShareDTO, partial, { excludeExtraneousValues: true }); - } - - fromList(partial: Partial<ShareDTO>[]) { - return partial.map((part) => - plainToClass(ShareDTO, part, { excludeExtraneousValues: true }), - ); - } -} diff --git a/backend/src/share/dto/shareComplete.dto.ts b/backend/src/share/dto/shareComplete.dto.ts deleted file mode 100644 index 67becf0..0000000 --- a/backend/src/share/dto/shareComplete.dto.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Expose, plainToClass } from "class-transformer"; -import { ShareDTO } from "./share.dto"; - -export class CompletedShareDTO extends ShareDTO { - @Expose() - notifyReverseShareCreator?: boolean; - - from(partial: Partial<CompletedShareDTO>) { - return plainToClass(CompletedShareDTO, partial, { - excludeExtraneousValues: true, - }); - } - - fromList(partial: Partial<CompletedShareDTO>[]) { - return partial.map((part) => - plainToClass(CompletedShareDTO, part, { excludeExtraneousValues: true }), - ); - } -} diff --git a/backend/src/share/dto/shareMetaData.dto.ts b/backend/src/share/dto/shareMetaData.dto.ts deleted file mode 100644 index 0733fef..0000000 --- a/backend/src/share/dto/shareMetaData.dto.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Expose, plainToClass } from "class-transformer"; - -export class ShareMetaDataDTO { - @Expose() - id: string; - - @Expose() - isZipReady: boolean; - - from(partial: Partial<ShareMetaDataDTO>) { - return plainToClass(ShareMetaDataDTO, partial, { - excludeExtraneousValues: true, - }); - } -} diff --git a/backend/src/share/dto/sharePassword.dto.ts b/backend/src/share/dto/sharePassword.dto.ts deleted file mode 100644 index c74761f..0000000 --- a/backend/src/share/dto/sharePassword.dto.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { IsOptional, IsString } from "class-validator"; - -export class SharePasswordDto { - @IsString() - @IsOptional() - password: string; -} diff --git a/backend/src/share/dto/shareSecurity.dto.ts b/backend/src/share/dto/shareSecurity.dto.ts deleted file mode 100644 index 4d37a24..0000000 --- a/backend/src/share/dto/shareSecurity.dto.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { IsNumber, IsOptional, IsString, Length } from "class-validator"; - -export class ShareSecurityDTO { - @IsString() - @IsOptional() - @Length(3, 30) - password: string; - - @IsNumber() - @IsOptional() - maxViews: number; -} diff --git a/backend/src/share/guard/createShare.guard.ts b/backend/src/share/guard/createShare.guard.ts deleted file mode 100644 index aa42b21..0000000 --- a/backend/src/share/guard/createShare.guard.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { ExecutionContext, Injectable } from "@nestjs/common"; -import { JwtGuard } from "src/auth/guard/jwt.guard"; -import { ConfigService } from "src/config/config.service"; -import { ReverseShareService } from "src/reverseShare/reverseShare.service"; - -@Injectable() -export class CreateShareGuard extends JwtGuard { - constructor( - configService: ConfigService, - private reverseShareService: ReverseShareService, - ) { - super(configService); - } - - async canActivate(context: ExecutionContext): Promise<boolean> { - if (await super.canActivate(context)) return true; - - const reverseShareTokenId = context.switchToHttp().getRequest() - .cookies.reverse_share_token; - - if (!reverseShareTokenId) return false; - - const isReverseShareTokenValid = - await this.reverseShareService.isValid(reverseShareTokenId); - - return isReverseShareTokenValid; - } -} diff --git a/backend/src/share/guard/shareOwner.guard.ts b/backend/src/share/guard/shareOwner.guard.ts deleted file mode 100644 index f8f4812..0000000 --- a/backend/src/share/guard/shareOwner.guard.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { - ExecutionContext, - Injectable, - NotFoundException, -} from "@nestjs/common"; -import { User } from "@prisma/client"; -import { Request } from "express"; -import { ConfigService } from "src/config/config.service"; -import { PrismaService } from "src/prisma/prisma.service"; -import { JwtGuard } from "../../auth/guard/jwt.guard"; - -@Injectable() -export class ShareOwnerGuard extends JwtGuard { - constructor( - configService: ConfigService, - private prisma: PrismaService, - ) { - super(configService); - } - - async canActivate(context: ExecutionContext) { - const request: Request = context.switchToHttp().getRequest(); - const shareId = Object.prototype.hasOwnProperty.call( - request.params, - "shareId", - ) - ? request.params.shareId - : request.params.id; - - const share = await this.prisma.share.findUnique({ - where: { id: shareId }, - include: { security: true }, - }); - - if (!share) throw new NotFoundException("Share not found"); - - // Run the JWTGuard to set the user - await super.canActivate(context); - const user = request.user as User; - - // If the user is an admin, allow access - if (user?.isAdmin) return true; - - // If it's a anonymous share, allow access - if (!share.creatorId) return true; - - // If not signed in, deny access - if (!user) return false; - - // If the user is the creator of the share, allow access - return share.creatorId == user.id; - } -} diff --git a/backend/src/share/guard/shareSecurity.guard.ts b/backend/src/share/guard/shareSecurity.guard.ts deleted file mode 100644 index 106702b..0000000 --- a/backend/src/share/guard/shareSecurity.guard.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { - ExecutionContext, - ForbiddenException, - Injectable, - NotFoundException, -} from "@nestjs/common"; -import { Request } from "express"; -import * as moment from "moment"; -import { PrismaService } from "src/prisma/prisma.service"; -import { ShareService } from "src/share/share.service"; -import { ConfigService } from "src/config/config.service"; -import { JwtGuard } from "src/auth/guard/jwt.guard"; -import { User } from "@prisma/client"; - -@Injectable() -export class ShareSecurityGuard extends JwtGuard { - constructor( - private shareService: ShareService, - private prisma: PrismaService, - configService: ConfigService, - ) { - super(configService); - } - - async canActivate(context: ExecutionContext) { - const request: Request = context.switchToHttp().getRequest(); - - const shareId = Object.prototype.hasOwnProperty.call( - request.params, - "shareId", - ) - ? request.params.shareId - : request.params.id; - - const shareToken = request.cookies[`share_${shareId}_token`]; - - const share = await this.prisma.share.findUnique({ - where: { id: shareId }, - include: { security: true, reverseShare: true }, - }); - - if ( - !share || - (moment().isAfter(share.expiration) && - !moment(share.expiration).isSame(0)) - ) - throw new NotFoundException("Share not found"); - - if (share.security?.password && !shareToken) - throw new ForbiddenException( - "This share is password protected", - "share_password_required", - ); - - if (!(await this.shareService.verifyShareToken(shareId, shareToken))) - throw new ForbiddenException( - "Share token required", - "share_token_required", - ); - - // Run the JWTGuard to set the user - await super.canActivate(context); - const user = request.user as User; - - // Only the creator and reverse share creator can access the reverse share if it's not public - if ( - share.reverseShare && - !share.reverseShare.publicAccess && - share.creatorId !== user?.id && - share.reverseShare.creatorId !== user?.id - ) - throw new ForbiddenException( - "Only reverse share creator can access this share", - "private_share", - ); - - return true; - } -} diff --git a/backend/src/share/guard/shareTokenSecurity.guard.ts b/backend/src/share/guard/shareTokenSecurity.guard.ts deleted file mode 100644 index fbc098f..0000000 --- a/backend/src/share/guard/shareTokenSecurity.guard.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { - CanActivate, - ExecutionContext, - Injectable, - NotFoundException, -} from "@nestjs/common"; -import { Request } from "express"; -import * as moment from "moment"; -import { PrismaService } from "src/prisma/prisma.service"; - -@Injectable() -export class ShareTokenSecurity implements CanActivate { - constructor(private prisma: PrismaService) {} - - async canActivate(context: ExecutionContext) { - const request: Request = context.switchToHttp().getRequest(); - const shareId = Object.prototype.hasOwnProperty.call( - request.params, - "shareId", - ) - ? request.params.shareId - : request.params.id; - - const share = await this.prisma.share.findUnique({ - where: { id: shareId }, - include: { security: true }, - }); - - if ( - !share || - (moment().isAfter(share.expiration) && - !moment(share.expiration).isSame(0)) - ) - throw new NotFoundException("Share not found"); - - return true; - } -} diff --git a/backend/src/share/share.controller.ts b/backend/src/share/share.controller.ts deleted file mode 100644 index ff58309..0000000 --- a/backend/src/share/share.controller.ts +++ /dev/null @@ -1,172 +0,0 @@ -import { - Body, - Controller, - Delete, - Get, - HttpCode, - Param, - Post, - Req, - Res, - UseGuards, -} from "@nestjs/common"; -import { JwtService } from "@nestjs/jwt"; -import { Throttle } from "@nestjs/throttler"; -import { User } from "@prisma/client"; -import { Request, Response } from "express"; -import * as moment from "moment"; -import { GetUser } from "src/auth/decorator/getUser.decorator"; -import { AdministratorGuard } from "src/auth/guard/isAdmin.guard"; -import { JwtGuard } from "src/auth/guard/jwt.guard"; -import { AdminShareDTO } from "./dto/adminShare.dto"; -import { CreateShareDTO } from "./dto/createShare.dto"; -import { MyShareDTO } from "./dto/myShare.dto"; -import { ShareDTO } from "./dto/share.dto"; -import { ShareMetaDataDTO } from "./dto/shareMetaData.dto"; -import { SharePasswordDto } from "./dto/sharePassword.dto"; -import { CreateShareGuard } from "./guard/createShare.guard"; -import { ShareOwnerGuard } from "./guard/shareOwner.guard"; -import { ShareSecurityGuard } from "./guard/shareSecurity.guard"; -import { ShareTokenSecurity } from "./guard/shareTokenSecurity.guard"; -import { ShareService } from "./share.service"; -import { CompletedShareDTO } from "./dto/shareComplete.dto"; -@Controller("shares") -export class ShareController { - constructor( - private shareService: ShareService, - private jwtService: JwtService, - ) {} - - @Get("all") - @UseGuards(JwtGuard, AdministratorGuard) - async getAllShares() { - return new AdminShareDTO().fromList(await this.shareService.getShares()); - } - - @Get() - @UseGuards(JwtGuard) - async getMyShares(@GetUser() user: User) { - return new MyShareDTO().fromList( - await this.shareService.getSharesByUser(user.id), - ); - } - - @Get(":id") - @UseGuards(ShareSecurityGuard) - async get(@Param("id") id: string) { - return new ShareDTO().from(await this.shareService.get(id)); - } - - @Get(":id/from-owner") - @UseGuards(ShareOwnerGuard) - async getFromOwner(@Param("id") id: string) { - return new ShareDTO().from(await this.shareService.get(id)); - } - - @Get(":id/metaData") - @UseGuards(ShareSecurityGuard) - async getMetaData(@Param("id") id: string) { - return new ShareMetaDataDTO().from(await this.shareService.getMetaData(id)); - } - - @Post() - @UseGuards(CreateShareGuard) - async create( - @Body() body: CreateShareDTO, - @Req() request: Request, - @GetUser() user: User, - ) { - const { reverse_share_token } = request.cookies; - return new ShareDTO().from( - await this.shareService.create(body, user, reverse_share_token), - ); - } - - @Post(":id/complete") - @HttpCode(202) - @UseGuards(CreateShareGuard, ShareOwnerGuard) - async complete(@Param("id") id: string, @Req() request: Request) { - const { reverse_share_token } = request.cookies; - return new CompletedShareDTO().from( - await this.shareService.complete(id, reverse_share_token), - ); - } - - @Delete(":id/complete") - @UseGuards(ShareOwnerGuard) - async revertComplete(@Param("id") id: string) { - return new ShareDTO().from(await this.shareService.revertComplete(id)); - } - - @Delete(":id") - @UseGuards(ShareOwnerGuard) - async remove(@Param("id") id: string, @GetUser() user: User) { - const isDeleterAdmin = user?.isAdmin === true; - await this.shareService.remove(id, isDeleterAdmin); - } - - @Throttle({ - default: { - limit: 10, - ttl: 60, - }, - }) - @Get("isShareIdAvailable/:id") - async isShareIdAvailable(@Param("id") id: string) { - return this.shareService.isShareIdAvailable(id); - } - - @HttpCode(200) - @Throttle({ - default: { - limit: 20, - ttl: 5 * 60, - }, - }) - @UseGuards(ShareTokenSecurity) - @Post(":id/token") - async getShareToken( - @Param("id") id: string, - @Req() request: Request, - @Res({ passthrough: true }) response: Response, - @Body() body: SharePasswordDto, - ) { - const token = await this.shareService.getShareToken(id, body.password); - - this.clearShareTokenCookies(request, response); - response.cookie(`share_${id}_token`, token, { - path: "/", - httpOnly: true, - }); - - return { token }; - } - - /** - * Keeps the 10 most recent share token cookies and deletes the rest and all expired ones - */ - private clearShareTokenCookies(request: Request, response: Response) { - const shareTokenCookies = Object.entries(request.cookies) - .filter(([key]) => key.startsWith("share_") && key.endsWith("_token")) - .map(([key, value]) => ({ - key, - payload: this.jwtService.decode(value), - })); - - const expiredTokens = shareTokenCookies.filter( - (cookie) => cookie.payload.exp < moment().unix(), - ); - const validTokens = shareTokenCookies.filter( - (cookie) => cookie.payload.exp >= moment().unix(), - ); - - expiredTokens.forEach((cookie) => response.clearCookie(cookie.key)); - - if (validTokens.length > 10) { - validTokens - .sort((a, b) => a.payload.exp - b.payload.exp) - .slice(0, -10) - .forEach((cookie) => response.clearCookie(cookie.key)); - } - } -} diff --git a/backend/src/share/share.module.ts b/backend/src/share/share.module.ts deleted file mode 100644 index 3738248..0000000 --- a/backend/src/share/share.module.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { forwardRef, Module } from "@nestjs/common"; -import { JwtModule } from "@nestjs/jwt"; -import { ClamScanModule } from "src/clamscan/clamscan.module"; -import { EmailModule } from "src/email/email.module"; -import { FileModule } from "src/file/file.module"; -import { ReverseShareModule } from "src/reverseShare/reverseShare.module"; -import { ShareController } from "./share.controller"; -import { ShareService } from "./share.service"; - -@Module({ - imports: [ - JwtModule.register({}), - EmailModule, - forwardRef(() => ClamScanModule), - ReverseShareModule, - forwardRef(() => FileModule), - ], - controllers: [ShareController], - providers: [ShareService], - exports: [ShareService], -}) -export class ShareModule {} diff --git a/backend/src/share/share.service.ts b/backend/src/share/share.service.ts deleted file mode 100644 index 8c0e81b..0000000 --- a/backend/src/share/share.service.ts +++ /dev/null @@ -1,375 +0,0 @@ -import { - BadRequestException, - ForbiddenException, - Injectable, - NotFoundException, -} from "@nestjs/common"; -import { JwtService, JwtSignOptions } from "@nestjs/jwt"; -import { Share, User } from "@prisma/client"; -import * as archiver from "archiver"; -import * as argon from "argon2"; -import * as fs from "fs"; -import * as moment from "moment"; -import { ClamScanService } from "src/clamscan/clamscan.service"; -import { ConfigService } from "src/config/config.service"; -import { EmailService } from "src/email/email.service"; -import { FileService } from "src/file/file.service"; -import { PrismaService } from "src/prisma/prisma.service"; -import { ReverseShareService } from "src/reverseShare/reverseShare.service"; -import { parseRelativeDateToAbsolute } from "src/utils/date.util"; -import { SHARE_DIRECTORY } from "../constants"; -import { CreateShareDTO } from "./dto/createShare.dto"; - -@Injectable() -export class ShareService { - constructor( - private prisma: PrismaService, - private fileService: FileService, - private emailService: EmailService, - private config: ConfigService, - private jwtService: JwtService, - private reverseShareService: ReverseShareService, - private clamScanService: ClamScanService, - ) {} - - async create(share: CreateShareDTO, user?: User, reverseShareToken?: string) { - if (!(await this.isShareIdAvailable(share.id)).isAvailable) - throw new BadRequestException("Share id already in use"); - - if (!share.security || Object.keys(share.security).length == 0) - share.security = undefined; - - if (share.security?.password) { - share.security.password = await argon.hash(share.security.password); - } - - let expirationDate: Date; - - // If share is created by a reverse share token override the expiration date - const reverseShare = - await this.reverseShareService.getByToken(reverseShareToken); - if (reverseShare) { - expirationDate = reverseShare.shareExpiration; - } else { - const parsedExpiration = parseRelativeDateToAbsolute(share.expiration); - - const expiresNever = moment(0).toDate() == parsedExpiration; - - if ( - this.config.get("share.maxExpiration") !== 0 && - (expiresNever || - parsedExpiration > - moment() - .add(this.config.get("share.maxExpiration"), "hours") - .toDate()) - ) { - throw new BadRequestException( - "Expiration date exceeds maximum expiration date", - ); - } - - expirationDate = parsedExpiration; - } - - fs.mkdirSync(`${SHARE_DIRECTORY}/${share.id}`, { - recursive: true, - }); - - const shareTuple = await this.prisma.share.create({ - data: { - ...share, - expiration: expirationDate, - creator: { connect: user ? { id: user.id } : undefined }, - security: { create: share.security }, - recipients: { - create: share.recipients - ? share.recipients.map((email) => ({ email })) - : [], - }, - }, - }); - - if (reverseShare) { - // Assign share to reverse share token - await this.prisma.reverseShare.update({ - where: { token: reverseShareToken }, - data: { - shares: { - connect: { id: shareTuple.id }, - }, - }, - }); - } - - return shareTuple; - } - - async createZip(shareId: string) { - const path = `${SHARE_DIRECTORY}/${shareId}`; - - const files = await this.prisma.file.findMany({ where: { shareId } }); - const archive = archiver("zip", { - zlib: { level: this.config.get("share.zipCompressionLevel") }, - }); - const writeStream = fs.createWriteStream(`${path}/archive.zip`); - - for (const file of files) { - archive.append(fs.createReadStream(`${path}/${file.id}`), { - name: file.name, - }); - } - - archive.pipe(writeStream); - await archive.finalize(); - } - - async complete(id: string, reverseShareToken?: string) { - const share = await this.prisma.share.findUnique({ - where: { id }, - include: { - files: true, - recipients: true, - creator: true, - reverseShare: { include: { creator: true } }, - }, - }); - - if (await this.isShareCompleted(id)) - throw new BadRequestException("Share already completed"); - - if (share.files.length == 0) - throw new BadRequestException( - "You need at least on file in your share to complete it.", - ); - - // Asynchronously create a zip of all files - if (share.files.length > 1) - this.createZip(id).then(() => - this.prisma.share.update({ where: { id }, data: { isZipReady: true } }), - ); - - // Send email for each recipient - for (const recipient of share.recipients) { - await this.emailService.sendMailToShareRecipients( - recipient.email, - share.id, - share.creator, - share.description, - share.expiration, - ); - } - - const notifyReverseShareCreator = share.reverseShare - ? this.config.get("smtp.enabled") && - share.reverseShare.sendEmailNotification - : undefined; - - if (notifyReverseShareCreator) { - await this.emailService.sendMailToReverseShareCreator( - share.reverseShare.creator.email, - share.id, - ); - } - - // Check if any file is malicious with ClamAV - void this.clamScanService.checkAndRemove(share.id); - - if (share.reverseShare) { - await this.prisma.reverseShare.update({ - where: { token: reverseShareToken }, - data: { remainingUses: { decrement: 1 } }, - }); - } - - const updatedShare = await this.prisma.share.update({ - where: { id }, - data: { uploadLocked: true }, - }); - - return { - ...updatedShare, - notifyReverseShareCreator, - }; - } - - async revertComplete(id: string) { - return this.prisma.share.update({ - where: { id }, - data: { uploadLocked: false, isZipReady: false }, - }); - } - - async getShares() { - const shares = await this.prisma.share.findMany({ - orderBy: { - expiration: "desc", - }, - include: { files: true, creator: true }, - }); - - return shares.map((share) => { - return { - ...share, - size: share.files.reduce((acc, file) => acc + parseInt(file.size), 0), - }; - }); - } - - async getSharesByUser(userId: string) { - const shares = await this.prisma.share.findMany({ - where: { - creator: { id: userId }, - uploadLocked: true, - // We want to grab any shares that are not expired or have their expiration date set to "never" (unix 0) - OR: [ - { expiration: { gt: new Date() } }, - { expiration: { equals: moment(0).toDate() } }, - ], - }, - orderBy: { - expiration: "desc", - }, - include: { recipients: true, files: true }, - }); - - return shares.map((share) => { - return { - ...share, - size: share.files.reduce((acc, file) => acc + parseInt(file.size), 0), - recipients: share.recipients.map((recipients) => recipients.email), - }; - }); - } - - async get(id: string): Promise<any> { - const share = await this.prisma.share.findUnique({ - where: { id }, - include: { - files: { - orderBy: { - name: "asc", - }, - }, - creator: true, - security: true, - }, - }); - - if (share.removedReason) - throw new NotFoundException(share.removedReason, "share_removed"); - - if (!share || !share.uploadLocked) - throw new NotFoundException("Share not found"); - return { - ...share, - hasPassword: !!share.security?.password, - }; - } - - async getMetaData(id: string) { - const share = await this.prisma.share.findUnique({ - where: { id }, - }); - - if (!share || !share.uploadLocked) - throw new NotFoundException("Share not found"); - - return share; - } - - async remove(shareId: string, isDeleterAdmin = false) { - const share = await this.prisma.share.findUnique({ - where: { id: shareId }, - }); - - if (!share) throw new NotFoundException("Share not found"); - - if (!share.creatorId && !isDeleterAdmin) - throw new ForbiddenException("Anonymous shares can't be deleted"); - - await this.fileService.deleteAllFiles(shareId); - await this.prisma.share.delete({ where: { id: shareId } }); - } - - async isShareCompleted(id: string) { - return (await this.prisma.share.findUnique({ where: { id } })).uploadLocked; - } - - async isShareIdAvailable(id: string) { - const share = await this.prisma.share.findUnique({ where: { id } }); - return { isAvailable: !share }; - } - - async increaseViewCount(share: Share) { - await this.prisma.share.update({ - where: { id: share.id }, - data: { views: share.views + 1 }, - }); - } - - async getShareToken(shareId: string, password: string) { - const share = await this.prisma.share.findFirst({ - where: { id: shareId }, - include: { - security: true, - }, - }); - - if ( - share?.security?.password && - !(await argon.verify(share.security.password, password)) - ) { - throw new ForbiddenException("Wrong password", "wrong_password"); - } - - if (share.security?.maxViews && share.security.maxViews <= share.views) { - throw new ForbiddenException( - "Maximum views exceeded", - "share_max_views_exceeded", - ); - } - - const token = await this.generateShareToken(shareId); - await this.increaseViewCount(share); - return token; - } - - async generateShareToken(shareId: string) { - const { expiration } = await this.prisma.share.findUnique({ - where: { id: shareId }, - }); - - const tokenPayload = { - shareId, - iat: moment().unix(), - }; - - const tokenOptions: JwtSignOptions = { - secret: this.config.get("internal.jwtSecret"), - }; - - if (!moment(expiration).isSame(0)) { - tokenOptions.expiresIn = moment(expiration).diff(new Date(), "seconds"); - } - - return this.jwtService.sign(tokenPayload, tokenOptions); - } - - async verifyShareToken(shareId: string, token: string) { - const { expiration } = await this.prisma.share.findUnique({ - where: { id: shareId }, - }); - - try { - const claims = this.jwtService.verify(token, { - secret: this.config.get("internal.jwtSecret"), - // Ignore expiration if expiration is 0 - ignoreExpiration: moment(expiration).isSame(0), - }); - - return claims.shareId == shareId; - } catch { - return false; - } - } -} diff --git a/backend/src/user/dto/createUser.dto.ts b/backend/src/user/dto/createUser.dto.ts deleted file mode 100644 index 9a1931f..0000000 --- a/backend/src/user/dto/createUser.dto.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { plainToClass } from "class-transformer"; -import { Allow, IsOptional, MinLength } from "class-validator"; -import { UserDTO } from "./user.dto"; - -export class CreateUserDTO extends UserDTO { - @Allow() - isAdmin: boolean; - - @MinLength(8) - @IsOptional() - password: string; - - from(partial: Partial<CreateUserDTO>) { - return plainToClass(CreateUserDTO, partial, { - excludeExtraneousValues: true, - }); - } -} diff --git a/backend/src/user/dto/publicUser.dto.ts b/backend/src/user/dto/publicUser.dto.ts deleted file mode 100644 index 024a697..0000000 --- a/backend/src/user/dto/publicUser.dto.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PickType } from "@nestjs/swagger"; -import { UserDTO } from "./user.dto"; - -export class PublicUserDTO extends PickType(UserDTO, ["username"] as const) {} diff --git a/backend/src/user/dto/updateOwnUser.dto.ts b/backend/src/user/dto/updateOwnUser.dto.ts deleted file mode 100644 index b1515d5..0000000 --- a/backend/src/user/dto/updateOwnUser.dto.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { PartialType, PickType } from "@nestjs/swagger"; -import { UserDTO } from "./user.dto"; - -export class UpdateOwnUserDTO extends PartialType( - PickType(UserDTO, ["username", "email"] as const), -) {} diff --git a/backend/src/user/dto/updateUser.dto.ts b/backend/src/user/dto/updateUser.dto.ts deleted file mode 100644 index dd0b1a3..0000000 --- a/backend/src/user/dto/updateUser.dto.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PartialType } from "@nestjs/swagger"; -import { CreateUserDTO } from "./createUser.dto"; - -export class UpdateUserDto extends PartialType(CreateUserDTO) {} diff --git a/backend/src/user/dto/user.dto.ts b/backend/src/user/dto/user.dto.ts deleted file mode 100644 index 7d5da72..0000000 --- a/backend/src/user/dto/user.dto.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Expose, plainToClass } from "class-transformer"; -import { IsEmail, Length, Matches, MinLength } from "class-validator"; - -export class UserDTO { - @Expose() - id: string; - - @Expose() - @Matches("^[a-zA-Z0-9_.]*$", undefined, { - message: "Username can only contain letters, numbers, dots and underscores", - }) - @Length(3, 32) - username: string; - - @Expose() - @IsEmail() - email: string; - - @Expose() - hasPassword: boolean; - - @MinLength(8) - password: string; - - @Expose() - isAdmin: boolean; - - @Expose() - isLdap: boolean; - - ldapDN?: string; - - @Expose() - totpVerified: boolean; - - from(partial: Partial<UserDTO>) { - const result = plainToClass(UserDTO, partial, { excludeExtraneousValues: true }); - result.isLdap = partial.ldapDN?.length > 0; - return result; - } - - fromList(partial: Partial<UserDTO>[]) { - return partial.map((part) => this.from(part)); - } -} diff --git a/backend/src/user/user.controller.ts b/backend/src/user/user.controller.ts deleted file mode 100644 index f591423..0000000 --- a/backend/src/user/user.controller.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { - Body, - Controller, - Delete, - Get, - Param, - Patch, - Post, - Res, - UseGuards, -} from "@nestjs/common"; -import { User } from "@prisma/client"; -import { Response } from "express"; -import { GetUser } from "src/auth/decorator/getUser.decorator"; -import { AdministratorGuard } from "src/auth/guard/isAdmin.guard"; -import { JwtGuard } from "src/auth/guard/jwt.guard"; -import { CreateUserDTO } from "./dto/createUser.dto"; -import { UpdateOwnUserDTO } from "./dto/updateOwnUser.dto"; -import { UpdateUserDto } from "./dto/updateUser.dto"; -import { UserDTO } from "./dto/user.dto"; -import { UserSevice } from "./user.service"; - -@Controller("users") -export class UserController { - constructor(private userService: UserSevice) {} - - // Own user operations - @Get("me") - @UseGuards(JwtGuard) - async getCurrentUser(@GetUser() user?: User) { - if (!user) return null; - const userDTO = new UserDTO().from(user); - userDTO.hasPassword = !!user.password; - return userDTO; - } - - @Patch("me") - @UseGuards(JwtGuard) - async updateCurrentUser( - @GetUser() user: User, - @Body() data: UpdateOwnUserDTO, - ) { - return new UserDTO().from(await this.userService.update(user.id, data)); - } - - @Delete("me") - @UseGuards(JwtGuard) - async deleteCurrentUser( - @GetUser() user: User, - @Res({ passthrough: true }) response: Response, - ) { - response.cookie("access_token", "accessToken", { maxAge: -1 }); - response.cookie("refresh_token", "", { - path: "/api/auth/token", - httpOnly: true, - maxAge: -1, - }); - return new UserDTO().from(await this.userService.delete(user.id)); - } - - // Global user operations - @Get() - @UseGuards(JwtGuard, AdministratorGuard) - async list() { - return new UserDTO().fromList(await this.userService.list()); - } - - @Post() - @UseGuards(JwtGuard, AdministratorGuard) - async create(@Body() user: CreateUserDTO) { - return new UserDTO().from(await this.userService.create(user)); - } - - @Patch(":id") - @UseGuards(JwtGuard, AdministratorGuard) - async update(@Param("id") id: string, @Body() user: UpdateUserDto) { - return new UserDTO().from(await this.userService.update(id, user)); - } - - @Delete(":id") - @UseGuards(JwtGuard, AdministratorGuard) - async delete(@Param("id") id: string) { - return new UserDTO().from(await this.userService.delete(id)); - } -} diff --git a/backend/src/user/user.module.ts b/backend/src/user/user.module.ts deleted file mode 100644 index b9fb497..0000000 --- a/backend/src/user/user.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Module } from "@nestjs/common"; -import { EmailModule } from "src/email/email.module"; -import { UserController } from "./user.controller"; -import { UserSevice } from "./user.service"; -import { FileModule } from "src/file/file.module"; - -@Module({ - imports: [EmailModule, FileModule], - providers: [UserSevice], - controllers: [UserController], - exports: [UserSevice] -}) -export class UserModule { } diff --git a/backend/src/user/user.service.ts b/backend/src/user/user.service.ts deleted file mode 100644 index 93d2cc4..0000000 --- a/backend/src/user/user.service.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { BadRequestException, Injectable } from "@nestjs/common"; -import { PrismaClientKnownRequestError } from "@prisma/client/runtime/library"; -import * as argon from "argon2"; -import * as crypto from "crypto"; -import { EmailService } from "src/email/email.service"; -import { PrismaService } from "src/prisma/prisma.service"; -import { FileService } from "../file/file.service"; -import { CreateUserDTO } from "./dto/createUser.dto"; -import { UpdateUserDto } from "./dto/updateUser.dto"; -import { ConfigService } from "../config/config.service"; -import { LdapAuthenticateResult } from "../auth/ldap.service"; - -@Injectable() -export class UserSevice { - constructor( - private prisma: PrismaService, - private emailService: EmailService, - private fileService: FileService, - private configService: ConfigService, - ) { } - - async list() { - return await this.prisma.user.findMany(); - } - - async get(id: string) { - return await this.prisma.user.findUnique({ where: { id } }); - } - - async create(dto: CreateUserDTO) { - let hash: string; - - // The password can be undefined if the user is invited by an admin - if (!dto.password) { - const randomPassword = crypto.randomUUID(); - hash = await argon.hash(randomPassword); - await this.emailService.sendInviteEmail(dto.email, randomPassword); - } else { - hash = await argon.hash(dto.password); - } - - try { - return await this.prisma.user.create({ - data: { - ...dto, - password: hash, - }, - }); - } catch (e) { - if (e instanceof PrismaClientKnownRequestError) { - if (e.code == "P2002") { - const duplicatedField: string = e.meta.target[0]; - throw new BadRequestException( - `A user with this ${duplicatedField} already exists`, - ); - } - } - } - } - - async update(id: string, user: UpdateUserDto) { - try { - const hash = user.password && (await argon.hash(user.password)); - - return await this.prisma.user.update({ - where: { id }, - data: { ...user, password: hash }, - }); - } catch (e) { - if (e instanceof PrismaClientKnownRequestError) { - if (e.code == "P2002") { - const duplicatedField: string = e.meta.target[0]; - throw new BadRequestException( - `A user with this ${duplicatedField} already exists`, - ); - } - } - } - } - - async delete(id: string) { - const user = await this.prisma.user.findUnique({ - where: { id }, - include: { shares: true }, - }); - if (!user) throw new BadRequestException("User not found"); - - await Promise.all( - user.shares.map((share) => this.fileService.deleteAllFiles(share.id)), - ); - - return await this.prisma.user.delete({ where: { id } }); - } - - async findOrCreateFromLDAP(username: string, ldap: LdapAuthenticateResult) { - const passwordHash = await argon.hash(crypto.randomUUID()); - const userEmail = ldap.attributes["userPrincipalName"]?.at(0) ?? `${crypto.randomUUID()}@ldap.local`; - const adminGroup = this.configService.get("ldap.adminGroups"); - const isAdmin = ldap.attributes["memberOf"]?.includes(adminGroup) ?? false; - try { - return await this.prisma.user.upsert({ - create: { - username, - email: userEmail, - password: passwordHash, - isAdmin, - ldapDN: ldap.userDn, - }, - update: { - username, - email: userEmail, - - isAdmin, - ldapDN: ldap.userDn, - }, - where: { - ldapDN: ldap.userDn - } - }); - } catch (e) { - if (e instanceof PrismaClientKnownRequestError) { - if (e.code == "P2002") { - const duplicatedField: string = e.meta.target[0]; - throw new BadRequestException( - `A user with this ${duplicatedField} already exists`, - ); - } - } - } - } -} diff --git a/backend/src/utils/date.util.ts b/backend/src/utils/date.util.ts deleted file mode 100644 index ab56615..0000000 --- a/backend/src/utils/date.util.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as moment from "moment"; - -export function parseRelativeDateToAbsolute(relativeDate: string) { - if (relativeDate == "never") return moment(0).toDate(); - - return moment() - .add( - relativeDate.split("-")[0], - relativeDate.split("-")[1] as moment.unitOfTime.DurationConstructor, - ) - .toDate(); -} diff --git a/backend/test/newman-system-tests.json b/backend/test/newman-system-tests.json deleted file mode 100644 index 16f1644..0000000 --- a/backend/test/newman-system-tests.json +++ /dev/null @@ -1,1265 +0,0 @@ -{ - "info": { - "_postman_id": "cd31bdf9-d558-42da-9231-154721476cd2", - "name": "Pingvin Share Testing", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", - "_exporter_id": "17822132" - }, - "item": [ - { - "name": "_setup", - "item": [ - { - "name": "Sign Up", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "if(pm.response.to.have.status(201)){", - " const token = pm.response.json()[\"accessToken\"]", - " // Get user id", - " const jwtPayload = JSON.parse(atob(token.split('.')[1]));", - " const userId = jwtPayload[\"sub\"]", - " pm.collectionVariables.set(\"USER_ID\", userId)", - "", - " pm.collectionVariables.set(\"COOKIES\", pm.response.headers.get(\"Set-Cookie\"))", - "}", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"system@test.org\",\n \"username\": \"system.test\",\n \"password\": \"J2y8unpJUcJDRv\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/auth/signUp", - "host": [ - "{{API_URL}}" - ], - "path": [ - "auth", - "signUp" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Auth", - "item": [ - { - "name": "Positive", - "item": [ - { - "name": "Sign Up", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 201\", () => {", - " pm.response.to.have.status(201);", - "});", - "", - "pm.test(\"Response contains tokens\", () => {", - " const responseBody = pm.response.json();", - " pm.expect(responseBody).to.have.property(\"accessToken\")", - " pm.expect(responseBody).to.have.property(\"refreshToken\")", - "});", - "", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Accept-Language", - "value": "de", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"system2@test.org\",\n \"username\": \"system2.test\",\n \"password\": \"N44HcHgeuAvfCT\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/auth/signUp", - "host": [ - "{{API_URL}}" - ], - "path": [ - "auth", - "signUp" - ] - } - }, - "response": [] - }, - { - "name": "Sign In", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", () => {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Response contains tokens\", () => {", - " const responseBody = pm.response.json();", - " pm.expect(responseBody).to.have.property(\"accessToken\")", - " pm.expect(responseBody).to.have.property(\"refreshToken\")", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Accept-Language", - "value": "de", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"system2@test.org\",\n \"password\": \"N44HcHgeuAvfCT\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/auth/signIn", - "host": [ - "{{API_URL}}" - ], - "path": [ - "auth", - "signIn" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Negative", - "item": [ - { - "name": "Sign Up - Without email", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 400\", () => {", - " pm.response.to.have.status(400);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Accept-Language", - "value": "de", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"password\": \"N44HcHgeuAvfCT\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/auth/signUp", - "host": [ - "{{API_URL}}" - ], - "path": [ - "auth", - "signUp" - ] - } - }, - "response": [] - }, - { - "name": "Sign Up - Without password", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 400\", () => {", - " pm.response.to.have.status(400);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Accept-Language", - "value": "de", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"system3@test.org\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/auth/signUp", - "host": [ - "{{API_URL}}" - ], - "path": [ - "auth", - "signUp" - ] - } - }, - "response": [] - }, - { - "name": "Sign In - Wrong email", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 401\", () => {", - " pm.response.to.have.status(401);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Accept-Language", - "value": "de", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"wrong-email@test.org\",\n \"password\": \"N44HcHgeuAvfCT\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/auth/signIn", - "host": [ - "{{API_URL}}" - ], - "path": [ - "auth", - "signIn" - ] - } - }, - "response": [] - }, - { - "name": "Sign In - Wrong password", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 401\", () => {", - " pm.response.to.have.status(401);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Accept-Language", - "value": "de", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"system2@test.org\",\n \"password\": \"wrong-password\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/auth/signIn", - "host": [ - "{{API_URL}}" - ], - "path": [ - "auth", - "signIn" - ] - } - }, - "response": [] - } - ] - } - ] - }, - { - "name": "Create Share", - "item": [ - { - "name": "Positive", - "item": [ - { - "name": "Check share id availability", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", () => {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Response body correct\", () => {", - " const responseBody = pm.response.json();", - " pm.expect(responseBody.isAvailable).to.be.equal(true)", - " pm.expect(Object.keys(responseBody).length).be.equal(1)", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{API_URL}}/shares/isShareIdAvailable/:id", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - "isShareIdAvailable", - ":id" - ], - "variable": [ - { - "key": "id", - "value": "test-share" - } - ] - } - }, - "response": [] - }, - { - "name": "Create Share", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 201\", () => {", - " pm.response.to.have.status(201);", - "});", - "", - "pm.test(\"Response body correct\", () => {", - " const responseBody = pm.response.json();", - " pm.expect(responseBody).to.have.property(\"id\")", - " pm.expect(responseBody).to.have.property(\"expiration\")", - " pm.expect(Object.keys(responseBody).length).be.equal(4)", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"id\": \"test-share\",\n \"expiration\": \"1-day\",\n \"recipients\": [],\n \"security\": {\n \"password\": \"share-password\",\n \"maxViews\": 1\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/shares", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares" - ] - } - }, - "response": [] - }, - { - "name": "Upload file", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 201\", () => {", - " pm.response.to.have.status(201);", - "});", - "", - "pm.test(\"Response body correct\", () => {", - " const responseBody = pm.response.json();", - " pm.expect(responseBody).to.have.property(\"id\")", - " pm.expect(responseBody.name).to.be.equal(\"test-file.txt\")", - " pm.expect(Object.keys(responseBody).length).be.equal(2)", - "});" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disabledSystemHeaders": { - "content-type": true - } - }, - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "data:application/octet-stream;base64,VGhpcyBpcyBhIHRlc3QgZmlsZWQgdXNlZCBmb3IgdXBsb2FkaW5nIGluIHRoZSBzeXN0ZW0gdGVzdC4=" - }, - "url": { - "raw": "{{API_URL}}/shares/:shareId/files?name=test-file.txt&chunkIndex=0&totalChunks=1", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":shareId", - "files" - ], - "query": [ - { - "key": "name", - "value": "test-file.txt" - }, - { - "key": "chunkIndex", - "value": "0" - }, - { - "key": "totalChunks", - "value": "1" - } - ], - "variable": [ - { - "key": "shareId", - "value": "test-share" - } - ] - } - }, - "response": [] - }, - { - "name": "Upload file 2", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 201\", () => {", - " pm.response.to.have.status(201);", - "});", - "", - "pm.test(\"Response body correct\", () => {", - " const responseBody = pm.response.json();", - " pm.expect(responseBody.name).to.be.equal(\"test-file2.txt\")", - " pm.expect(Object.keys(responseBody).length).be.equal(2)", - "});" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disabledSystemHeaders": { - "content-type": true - } - }, - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "data:application/octet-stream;base64,VGhpcyBpcyBhIHRlc3QgZmlsZWQgdXNlZCBmb3IgdXBsb2FkaW5nIGluIHRoZSBzeXN0ZW0gdGVzdC4=" - }, - "url": { - "raw": "{{API_URL}}/shares/:shareId/files?name=test-file2.txt&chunkIndex=0&totalChunks=1", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":shareId", - "files" - ], - "query": [ - { - "key": "name", - "value": "test-file2.txt" - }, - { - "key": "chunkIndex", - "value": "0" - }, - { - "key": "totalChunks", - "value": "1" - } - ], - "variable": [ - { - "key": "shareId", - "value": "test-share" - } - ] - } - }, - "response": [] - }, - { - "name": "Complete share", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 202\", () => {", - " pm.response.to.have.status(202);", - "});", - "", - "pm.test(\"Response body correct\", () => {", - " const responseBody = pm.response.json();", - " pm.expect(responseBody).to.have.property(\"id\")", - " pm.expect(responseBody).to.have.property(\"expiration\")", - " pm.expect(Object.keys(responseBody).length).be.equal(4)", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{API_URL}}/shares/:id/complete", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":id", - "complete" - ], - "variable": [ - { - "key": "id", - "value": "test-share" - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Negative", - "item": [ - { - "name": "Check share id availability - Already exists", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", () => {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Response body correct\", () => {", - " const responseBody = pm.response.json();", - " pm.expect(responseBody.isAvailable).to.be.equal(false)", - " pm.expect(Object.keys(responseBody).length).be.equal(1)", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{API_URL}}/shares/isShareIdAvailable/:id", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - "isShareIdAvailable", - ":id" - ], - "variable": [ - { - "key": "id", - "value": "test-share" - } - ] - } - }, - "response": [] - }, - { - "name": "Create Share - Already exists", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 400\", () => {", - " pm.response.to.have.status(400);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"id\": \"test-share\",\n \"expiration\" : \"2-months\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/shares", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares" - ] - } - }, - "response": [] - }, - { - "name": "Create Share - Id less than 3 chars", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 400\", () => {", - " pm.response.to.have.status(400);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"id\": \"ab\",\n \"expiration\" : \"2-months\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/shares", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares" - ] - } - }, - "response": [] - }, - { - "name": "Upload file - Share already completed", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 400\", () => {", - " pm.response.to.have.status(400);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{API_URL}}/shares/:shareId/files", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":shareId", - "files" - ], - "variable": [ - { - "key": "shareId", - "value": "test-share" - } - ] - } - }, - "response": [] - }, - { - "name": "Upload file - Share not found", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 404\", () => {", - " pm.response.to.have.status(404);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{API_URL}}/shares/:shareId/files", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":shareId", - "files" - ], - "variable": [ - { - "key": "shareId", - "value": "not-found" - } - ] - } - }, - "response": [] - }, - { - "name": "Complete share - Not found", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 404\", () => {", - " pm.response.to.have.status(404);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{API_URL}}/shares/:id/complete", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":id", - "complete" - ], - "variable": [ - { - "key": "id", - "value": "not-found" - } - ] - } - }, - "response": [] - }, - { - "name": "Complete share - Already completed", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 400\", () => {", - " pm.response.to.have.status(400);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{API_URL}}/shares/:id/complete", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":id", - "complete" - ], - "variable": [ - { - "key": "id", - "value": "test-share" - } - ] - } - }, - "response": [] - } - ] - } - ] - }, - { - "name": "Get Share", - "item": [ - { - "name": "Positive", - "item": [ - { - "name": "Get share token", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", () => {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Response body correct\", () => {", - " const responseBody = pm.response.json();", - " pm.expect(responseBody).to.have.property(\"token\")", - " pm.expect(Object.keys(responseBody).length).be.equal(1)", - "});", - "", - "pm.collectionVariables.set(\"COOKIES\", `${pm.collectionVariables.get(\"COOKIES\")};${pm.response.headers.get(\"Set-Cookie\")}`)", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"password\" : \"share-password\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/shares/:shareId/token", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":shareId", - "token" - ], - "variable": [ - { - "key": "shareId", - "value": "test-share" - } - ] - } - }, - "response": [] - }, - { - "name": "Get share", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", () => {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Response contains 2 files\", () => {", - " const responseBody = pm.response.json();", - " pm.expect(responseBody.files.length).be.equal(2)", - "});", - "", - "pm.collectionVariables.set(\"fileId\", pm.response.json().files[0].id)" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{API_URL}}/shares/:shareId", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":shareId" - ], - "variable": [ - { - "key": "shareId", - "value": "test-share" - } - ] - } - }, - "response": [] - }, - { - "name": "Get File", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", () => {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{API_URL}}/shares/:shareId/files/{{fileId}}", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":shareId", - "files", - "{{fileId}}" - ], - "variable": [ - { - "key": "shareId", - "value": "test-share" - } - ] - } - }, - "response": [] - }, - { - "name": "Get Zip", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", () => {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{API_URL}}/shares/:shareId/files/zip", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":shareId", - "files", - "zip" - ], - "variable": [ - { - "key": "shareId", - "value": "test-share" - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Negative", - "item": [ - { - "name": "Get share token - Wrong password", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 403\", () => {", - " pm.response.to.have.status(403);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"password\" : \"wrong-password\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/shares/:shareId/token", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":shareId", - "token" - ], - "variable": [ - { - "key": "shareId", - "value": "test-share" - } - ] - } - }, - "response": [] - }, - { - "name": "Get share token - Visitor limit exceeded", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 403\", () => {", - " pm.response.to.have.status(403);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"password\" : \"share-password\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{API_URL}}/shares/:shareId/token", - "host": [ - "{{API_URL}}" - ], - "path": [ - "shares", - ":shareId", - "token" - ], - "variable": [ - { - "key": "shareId", - "value": "test-share" - } - ] - } - }, - "response": [] - } - ] - } - ] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "pm.request.addHeader(\"Cookie\", pm.collectionVariables.get(\"COOKIES\"))" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "variable": [ - { - "key": "API_URL", - "value": "http://localhost:8080/api", - "type": "string" - } - ] -} \ No newline at end of file diff --git a/backend/tsconfig.build.json b/backend/tsconfig.build.json deleted file mode 100644 index 64f86c6..0000000 --- a/backend/tsconfig.build.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.json", - "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] -} diff --git a/backend/tsconfig.json b/backend/tsconfig.json deleted file mode 100644 index 46ac521..0000000 --- a/backend/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "declaration": true, - "removeComments": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "allowSyntheticDefaultImports": true, - "target": "es2021", - "lib": [ - "ES2021" - ], - "sourceMap": true, - "outDir": "./dist", - "baseUrl": "./", - "incremental": true, - "skipLibCheck": true, - "strictNullChecks": false, - "noImplicitAny": false, - "strictBindCallApply": false, - "forceConsistentCasingInFileNames": false, - "noFallthroughCasesInSwitch": false - } -} diff --git a/crowdin.yml b/crowdin.yml deleted file mode 100644 index fa8c406..0000000 --- a/crowdin.yml +++ /dev/null @@ -1,4 +0,0 @@ -files: - - source: /frontend/src/i18n/translations/en-US.ts - translation: /%original_path%/%locale%.ts -pull_request_title: "chore(translations): update translations via Crowdin" diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml deleted file mode 100644 index 7f46bd7..0000000 --- a/docker-compose-dev.yml +++ /dev/null @@ -1,6 +0,0 @@ -services: - clamav: - restart: unless-stopped - ports: - - 3310:3310 - image: clamav/clamav \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index a5189ad..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -services: - pingvin-share: - image: stonith404/pingvin-share - restart: unless-stopped - ports: - - 3000:3000 - volumes: - - "./data:/opt/app/backend/data" - - "./data/images:/opt/app/frontend/public/img" -# Optional: If you add ClamAV, uncomment the following to have ClamAV start first. -# depends_on: -# clamav: -# condition: service_healthy -# Optional: Add ClamAV (see README.md) -# ClamAV is currently only available for AMD64 see https://github.com/Cisco-Talos/clamav/issues/482 -# clamav: -# restart: unless-stopped -# image: clamav/clamav diff --git a/docs/CONTRIBUTING.es.md b/docs/CONTRIBUTING.es.md deleted file mode 100644 index 8171454..0000000 --- a/docs/CONTRIBUTING.es.md +++ /dev/null @@ -1,95 +0,0 @@ -_Leer esto en otro idioma: [Inglés](/CONTRIBUTING.md), [Español](/docs/CONTRIBUTING.es.md), [Chino Simplificado](/docs/CONTRIBUTING.zh-cn.md)_ - ---- - -# Contribuyendo - -¡Nos ❤️ encantaría que contribuyas a Pingvin Share y nos ayudes a hacerlo mejor! Todas las contribuciones son bienvenidas, incluyendo problemas, sugerencias, _pull requests_ y más. - -## Para comenzar - -Si encontraste un error, tienes una sugerencia o algo más, simplemente crea un problema (issue) en GitHub y nos pondremos en contacto contigo 😊. - -## Para hacer una Pull Request - -Antes de enviar la pull request para su revisión, asegúrate de que: - -- El nombre de la pull request sigue las [especificaciones de Commits Convencionales](https://www.conventionalcommits.org/): - - `<tipo>[ámbito opcional]: <descripción>` - - ejemplo: - - ``` - feat(share): agregar protección con contraseña - ``` - - Donde `tipo` puede ser: - - - **feat** - es una nueva función - - **doc** - cambios solo en la documentación - - **fix** - una corrección de error - - **refactor** - cambios en el código que no solucionan un error ni agregan una función - -- Tu pull requests tiene una descripción detallada. - -- Ejecutaste `npm run format` para formatear el código. - -<details> - <summary>¿No sabes como crear una pull request? Aprende cómo crear una pull request</summary> - -1. Crea un fork del repositorio haciendo clic en el botón `Fork` en el repositorio de Pingvin Share. - -2. Clona tu fork en tu máquina con `git clone`. - -``` -$ git clone https://github.com/[your_username]/pingvin-share -``` - -3. Trabajar - hacer commit - repetir - -4. Haz un `push` de tus cambios a GitHub. - -``` -$ git push origin [nombre_de_tu_nueva_rama] -``` - -5. Envía tus cambios para su revisión. Si vas a tu repositorio en GitHub, verás un botón `Comparar y crear pull requests`. Haz clic en ese botón. -6. Inicia una Pull Request -7. Ahora envía la pull requests y haz clic en `Crear pull requests` -8. Espera a que alguien revise tu solicitud y apruebe o rechace tus cambios. Puedes ver los comentarios en la página de la solicitud en GitHub. - -</details> - -## Instalación del proyecto - -Pingvin Share consiste de un frontend y un backend. - -### Backend - -El backend está hecho con [Nest.js](https://nestjs.com) y usa Typescript. - -#### Instalación - -1. Abrimos la carpeta `backend` -2. Instalamos las dependencias con `npm install` -3. Haz un `push` del esquema de la base de datos a la base de datos ejecutando `npx prisma db push` -4. Rellena la base de datos ejecutando `npx prisma db seed` -5. Inicia el backend con `npm run dev` - -### Frontend - -El frontend está hecho con [Next.js](https://nextjs.org) y usa Typescript. - -#### Instalación - -1. Primero inicia el backend -2. Abre la carpeta `frontend` -3. Instala las dependencias con `npm install` -4. Inicia el frontend con `npm run dev` - -¡Ya está todo listo! - -### Testing - -Por el momento, solo tenemos pruebas para el backend. Para ejecutar estas pruebas, debes ejecutar el comando `npm run test:system` en la carpeta del backend. diff --git a/docs/CONTRIBUTING.zh-cn.md b/docs/CONTRIBUTING.zh-cn.md deleted file mode 100644 index f693129..0000000 --- a/docs/CONTRIBUTING.zh-cn.md +++ /dev/null @@ -1,97 +0,0 @@ -_选择合适的语言阅读: [西班牙语](/docs/CONTRIBUTING.es.md), [英语](/CONTRIBUTING.md), [简体中文](/docs/CONTRIBUTING.zh-cn.md)_ - ---- - -# 提交贡献 - -我们非常感谢你 ❤️ 为 Pingvin Share 提交贡献使其变得更棒! 欢迎任何形式的贡献,包括 issues, 建议, PRs 和其他形式 - -## 小小的开始 - -你找到了一个 bug,有新特性建议或者其他提议,请在 GitHub 建立一个 issue 以便我和你联络 😊 - -## 提交一个 Pull Request - -在你提交 PR 前请确保 - -- PR 的名字遵守 [Conventional Commits specification](https://www.conventionalcommits.org): - - `<type>[optional scope]: <description>` - - 例如: - - ``` - feat(share): add password protection - ``` - - `TYPE` 可以是: - - - **feat** - 这是一个新特性 feature - - **doc** - 仅仅改变了文档部分 documentation - - **fix** - 修复了一个 bug - - **refactor** - 更新了代码,但是并非出于增加新特性 feature 或修复 bug 的目的 - -- 请在 PR 中附详细的解释说明 -- 使用 `npm run format` 格式化你的代码 - -<details> - <summary>不知道怎么发起一个 PR? 点开了解怎么发起一个 PR </summary> - -1. 点击 Pingvin Share 仓库的 `Fork` 按钮,复制一份你的仓库 - -2. 通过 `git clone` 将你的仓库克隆到本地 - -``` -$ git clone https://github.com/[你的用户名]/pingvin-share -``` - -3. 进行你的修改 - 提交 commit 你的修改 - 重复直到完成 - -4. 将你的修改提交到 GitHub - -``` -$ git push origin [你的新分支的名字] -``` - -5. 提交你的代码以便代码审查 - - 如果你进入你 fork 的 Github 仓库,你会看到一个 `Compare & pull request` 按钮,点击该按钮 - -6. 发起一个 PR -7. 点击 `Create pull request` 来提交你的 PR -8. 等待代码审查,通过或以某些原因拒绝 - -</details> - -## 配置开发项目 - -Pingvin Share 包括前端和后端部分 - -### 后端 - -后端使用 [Nest.js](https://nestjs.com) 建立,使用 Typescript - -#### 搭建 - -1. 打开 `backend` 文件夹 -2. 使用 `npm install` 安装依赖 -3. 通过 `npx prisma db push` 配置数据库结构 -4. 通过 `npx prisma db seed` 初始化数据库数据 -5. 通过 `npm run dev` 启动后端 - -### 前端 - -后端使用 [Next.js](https://nextjs.org) 建立,使用 Typescript - -#### 搭建 - -1. 首先启动后端 -2. 打开 `frontend` 文件夹 -3. 通过 `npm install` 安装依赖 -4. 通过 `npm run dev` 启动前端 - -开发项目配置完成 - -### 测试 - -目前阶段我们只有后端的系统测试,在 `backend` 文件夹运行 `npm run test:system` 来执行系统测试 diff --git a/docs/README.es.md b/docs/README.es.md deleted file mode 100644 index c093c74..0000000 --- a/docs/README.es.md +++ /dev/null @@ -1,129 +0,0 @@ -# <div align="center"><img src="https://user-images.githubusercontent.com/58886915/166198400-c2134044-1198-4647-a8b6-da9c4a204c68.svg" width="40"/> </br>Pingvin Share</div> - ---- - -_Leer esto en otro idioma: [Inglés](/README.md), [Español](/docs/README.es.md), [Chino Simplificado](/docs/README.zh-cn.md), [日本語](/docs/README.ja-jp.md)_ - ---- - -Pingvin Share es una plataforma de intercambio de archivos autoalojada y una alternativa a WeTransfer. - -## ✨ Características - -- Compartir archivos utilizando un enlace -- Tamaño de archivo ilimitado (unicamente restringido por el espacio en disco) -- Establecer una fecha de caducidad para los recursos compartidos -- Uso compartido seguro con límites de visitantes y contraseñas -- Destinatarios de correo electrónico -- Integración con ClamAV para escaneos de seguridad - -## 🐧 Conoce Pingvin Share - -- [Demo](https://pingvin-share.dev.eliasschneider.com) -- [Reseña realizada por No Solo Hacking (español)](https://www.youtube.com/watch?v=ocd4EpLTYkU) -- [Reseña por DB Tech (inglés)](https://www.youtube.com/watch?v=rWwNeZCOPJA) - -<img src="https://user-images.githubusercontent.com/58886915/225038319-b2ef742c-3a74-4eb6-9689-4207a36842a4.png" width="700"/> - -## ⌨️ Instalación - -> Nota: Pingvin Share está en sus primeras etapas y puede contener errores. - -### Instalación con Docker (recomendada) - -1. Descarge el archivo `docker-compose.yml` -2. Ejecute `docker-compose up -d` - -El sitio web ahora está esperando conexiones en `http://localhost:3000`, ¡diviértase usando Pingvin Share 🐧! - -### Instalación autónoma - -Herramientas requeridas: - -- [Node.js](https://nodejs.org/en/download/) >= 16 -- [Git](https://git-scm.com/downloads) -- [pm2](https://pm2.keymetrics.io/) para ejecutar Pingvin Share en segundo plano - -```bash -git clone https://github.com/stonith404/pingvin-share -cd pingvin-share - -# Consultar la última versión -git fetch --tags && git checkout $(git describe --tags `git rev-list --tags --max-count=1`) - -# Iniciar el backend -cd backend -npm install -npm run build -pm2 start --name="pingvin-share-backend" npm -- run prod - -# Iniciar el frontend -cd ../frontend -npm install -npm run build -pm2 start --name="pingvin-share-frontend" npm -- run start -``` - -El sitio web ahora está esperando conexiones en `http://localhost:3000`, ¡diviértase usando Pingvin Share 🐧! - -### Integraciones - -#### ClamAV (Unicamente con Docker) - -ClamAV se utiliza para escanear los recursos compartidos en busca de archivos maliciosos y eliminarlos si los encuentra. - -1. Añade el contenedor ClamAV al stack de Docker Compose (ver `docker-compose.yml`) e inicie el contenedor. -2. Docker esperará a que ClamAV se inicie antes de iniciar Pingvin Share. Esto puede tardar uno o dos minutos. -3. Los registros de Pingvin Share ahora deberían decir "ClamAV está activo". - -Por favor, ten en cuenta que ClamAV necesita muchos [recursos](https://docs.clamav.net/manual/Installing/Docker.html#memory-ram-requirements). - -### Recursos adicionales - -- [Instalación en Synology NAS (Inglés)](https://mariushosting.com/how-to-install-pingvin-share-on-your-synology-nas/) - -### Actualizar a una nueva versión - -Dado que Pingvin Share se encuentra en una fase inicial, consulte las notas de la versión para conocer los cambios de última hora antes de actualizar. - -#### Docker - -```bash -docker compose pull -docker compose up -d -``` - -#### Instalación autónoma - -1. Deten la aplicación en ejecución - - ```bash - pm2 stop pingvin-share-backend pingvin-share-frontend - ``` - -2. Repite los pasos de la [guía de instalación](#instalación-autonoma) excepto el paso de `git clone`. - - ```bash - cd pingvin-share - - # Consultar la última versión - git fetch --tags && git checkout $(git describe --tags `git rev-list --tags --max-count=1`) - - # Iniciar el backend - cd backend - npm run build - pm2 restart pingvin-share-backend - - # Iniciar frontend - cd ../frontend - npm run build - pm2 restart pingvin-share-frontend - ``` - -### Marca personalizada - -Puedes cambiar el nombre y el logotipo de la aplicación visitando la página de configuración de administrador. - -## 🖤 Contribuye - -¡Eres bienvenido a contribuir a Pingvin Share! Sige la [guía de contribución](/CONTRIBUTING.md) para empezar. diff --git a/docs/README.ja-jp.md b/docs/README.ja-jp.md deleted file mode 100644 index e50671b..0000000 --- a/docs/README.ja-jp.md +++ /dev/null @@ -1,158 +0,0 @@ -# <div align="center"><img src="https://user-images.githubusercontent.com/58886915/166198400-c2134044-1198-4647-a8b6-da9c4a204c68.svg" width="40"/> </br>Pingvin Share</div> - ---- - -_READMEを別の言語で読む: [Spanish](/docs/README.es.md), [English](/README.md), [Simplified Chinese](/docs/README.zh-cn.md), [日本語](/docs/README.ja-jp.md)_ - ---- - -Pingvin Share は、セルフホスト型のファイル共有プラットフォームであり、WeTransfer、ギガファイル便などの代替プラットフォームです。 - -## ✨ 特徴的な機能 - -- リンクを用いたファイル共有 -- ファイルサイズ無制限 (ストレージスペースの範囲内で) -- 共有への有効期限の設定 -- 訪問回数の制限とパスワードの設定により共有を安全に保つ -- メールでリンクを共有 -- ClamAVと連携して、ウイルスチェックが可能 - -## 🐧 Pingvin Shareについて知る - -- [デモ](https://pingvin-share.dev.eliasschneider.com) -- [DB Techによるレビュー](https://www.youtube.com/watch?v=rWwNeZCOPJA) - -<img src="https://user-images.githubusercontent.com/58886915/225038319-b2ef742c-3a74-4eb6-9689-4207a36842a4.png" width="700"/> - -## ⌨️ セットアップ - -> 注意: Pingvin Shareは、早期段階であり、バグが含まれている場合があります。 - -### Dockerでインストール (おすすめ) - -1. `docker-compose.yml`ファイルをダウンロード -2. `docker-compose up -d`を実行 - -Webサイトは、`http://localhost:3000`でリッスンされます。これでPingvin Shareをお使い頂けます🐧! - -### スタンドアローンインストール - -必要なツール: - -- [Node.js](https://nodejs.org/en/download/) >= 16 -- [Git](https://git-scm.com/downloads) -- [pm2](https://pm2.keymetrics.io/) Pingvin Shareをバックグラウンドで動作させるために必要 - -```bash -git clone https://github.com/stonith404/pingvin-share -cd pingvin-share - -# 最新バージョンをチェックアウト -git fetch --tags && git checkout $(git describe --tags `git rev-list --tags --max-count=1`) - -# バックエンドを開始 -cd backend -npm install -npm run build -pm2 start --name="pingvin-share-backend" npm -- run prod - -#フロントエンドを開始 -cd ../frontend -npm install -npm run build -pm2 start --name="pingvin-share-frontend" npm -- run start -``` - -Webサイトは、`http://localhost:3000`でリッスンされます。これでPingvin Shareをお使い頂けます🐧! - -### 連携機能 - -#### ClamAV (Dockerのみ) - -ClamAVは、共有されたファイルをスキャンし、感染したファイルを見つけた場合に削除するために使用されます。 - -1. ClamAVコンテナをDocker Composeの定義ファイル(`docker-compose.yml`を確認)に追加し、コンテナを開始してください。 -2. Dockerは、Pingvin Shareを開始する前に、ClamAVの準備が整うまで待機します。これには、1分から2分ほどかかります。 -3. Pingvin Shareのログに"ClamAV is active"というログが記録されます。 - -ClamAVは、非常に多くのリソースを必要とします、詳しくは[リソース](https://docs.clamav.net/manual/Installing/Docker.html#memory-ram-requirements)をご確認ください。 - -### 追加情報 - -- [Synology NASへのインストール方法](https://mariushosting.com/how-to-install-pingvin-share-on-your-synology-nas/) - -### 新しいバージョンへのアップグレード - -Pingvin Shareは早期段階のため、アップグレード前に必ずリリースノートを確認して、アップグレードしても問題ないかどうかご確認ください。 - -#### Docker - -```bash -docker compose pull -docker compose up -d -``` - -#### スタンドアローン - -1. アプリを停止する - ```bash - pm2 stop pingvin-share-backend pingvin-share-frontend - ``` -2. `git clone`のステップを除いて、[インストールガイド](#stand-alone-installation)をくり返してください。 - - ```bash - cd pingvin-share - - # 最新バージョンをチェックアウト - git fetch --tags && git checkout $(git describe --tags `git rev-list --tags --max-count=1`) - - # バックエンドを開始 - cd backend - npm run build - pm2 restart pingvin-share-backend - - #フロントエンドを開始 - cd ../frontend - npm run build - pm2 restart pingvin-share-frontend - ``` - -### 設定 - -管理者のダッシュボード内の「設定」ページから、Pingvin Shareをカスタマイズできます。 - -#### 環境変数 - -インストール時の特定の設定で、環境変数を使用できます。次の環境変数が使用可能です: - -##### バックエンド - -| 変数名 | デフォルト値 | 説明 | -| ---------------- | -------------------------------------------------- | -------------------------------------- | -| `PORT` | `8080` | バックエンドがリッスンするポート番号 | -| `DATABASE_URL` | `file:../data/pingvin-share.db?connection_limit=1` | SQLiteのURL | -| `DATA_DIRECTORY` | `./data` | データを保管するディレクトリ | -| `CLAMAV_HOST` | `127.0.0.1` | ClamAVサーバーのIPアドレス | -| `CLAMAV_PORT` | `3310` | ClamAVサーバーのポート番号 | - -##### フロントエンド - -| 変数名 | デフォルト値 | 説明 | -| --------- | ----------------------- | ---------------------------------------- | -| `PORT` | `3000` | フロントエンドがリッスンするポート番号 | -| `API_URL` | `http://localhost:8080` | フロントエンドからアクセスするバックエンドへのURL | - -## 🖤 コントリビュート - -### 翻訳 - -Pingvin Shareをあなたが使用している言語に翻訳するお手伝いを募集しています。 -[Crowdin](https://crowdin.com/project/pingvin-share)上で、簡単にPingvin Shareの翻訳作業への参加が可能です。 - -あなたの言語がありませんか? 気軽に[リクエスト](https://github.com/stonith404/pingvin-share/issues/new?assignees=&labels=language-request&projects=&template=language-request.yml&title=%F0%9F%8C%90+Language+request%3A+%3Clanguage+name+in+english%3E)してください。 - -翻訳中に問題がありましたか? [ローカライズに関するディスカッション](https://github.com/stonith404/pingvin-share/discussions/198)に是非参加してください。 - -### プロジェクト - -Pingvin Shareへのコントリビュートをいつでもお待ちしています! [コントリビューションガイド](/CONTRIBUTING.md)を確認して、是非参加してください。 diff --git a/docs/README.zh-cn.md b/docs/README.zh-cn.md deleted file mode 100644 index 9865245..0000000 --- a/docs/README.zh-cn.md +++ /dev/null @@ -1,126 +0,0 @@ -# <div align="center"><img src="https://user-images.githubusercontent.com/58886915/166198400-c2134044-1198-4647-a8b6-da9c4a204c68.svg" width="40"/> </br>Pingvin Share</div> - ---- - -_选择合适的语言阅读: [西班牙语](/docs/README.es.md), [英语](/README.md), [简体中文](/docs/README.zh-cn.md), [日本语](/docs/README.ja-jp.md)_ - ---- - -Pingvin Share 是一个可自建的文件分享平台,是 WeTransfer 的一个替代品 - -## ✨ 特性 - -- 通过可自定义后缀的链接分享文件 -- 可自定义任意大小的文件上传限制 (受制于托管所在的硬盘大小) -- 对共享链接设置有效期限 -- 对共享链接设置访问次数和访问密码 -- 通过邮件自动发送共享链接 -- 整合 ClamAV 进行反病毒检查 - -## 🐧 了解一下 Pingvin Share - -- [示例网站](https://pingvin-share.dev.eliasschneider.com) -- [DB Tech 推荐视频](https://www.youtube.com/watch?v=rWwNeZCOPJA) - -<img src="https://user-images.githubusercontent.com/58886915/225038319-b2ef742c-3a74-4eb6-9689-4207a36842a4.png" width="700"/> - -## ⌨️ 自建指南 - -> 注意:Pingvin Share 仍处于开发阶段并且可能存在 bugs - -### Docker 部署 (推荐) - -1. 下载 `docker-compose.yml` -2. 运行命令 `docker-compose up -d` - -现在网站运行在 `http://localhost:3000`,尝试一下你本地的 Pingvin Share 🐧! - -### Stand-alone 部署 - -必须的依赖: - -- [Node.js](https://nodejs.org/en/download/) >= 16 -- [Git](https://git-scm.com/downloads) -- [pm2](https://pm2.keymetrics.io/) 用于后台运行 Pingvin Share - -```bash -git clone https://github.com/stonith404/pingvin-share -cd pingvin-share - -# 获取最新的版本 -git fetch --tags && git checkout $(git describe --tags `git rev-list --tags --max-count=1`) - -# 启动后端 backend -cd backend -npm install -npm run build -pm2 start --name="pingvin-share-backend" npm -- run prod - -# 启动前端 frontend -cd ../frontend -npm install -npm run build -pm2 start --name="pingvin-share-frontend" npm -- run start -``` - -现在网站运行在 `http://localhost:3000`,尝试一下你本地的 Pingvin Share 🐧! - -### 整合组件 - -#### ClamAV (仅限 Docker 部署) - -扫描上传文件中是否存在可疑文件,如果存在 ClamAV 会自动移除 - -1. 在 docker-compose 配置中添加 ClamAV 容器 (见 `docker-compose.yml` 注释部分) 并启动容器 -2. Docker 会在启动 Pingvin Share 前启动 ClamAV,也许会花费 1-2 分钟 -3. Pingvin Share 日志中应该有 "ClamAV is active" - -请注意 ClamAV 会消耗很多 [系统资源(特别是内存)](https://docs.clamav.net/manual/Installing/Docker.html#memory-ram-requirements) - -### 更多资源 - -- [群晖 NAS 配置](https://mariushosting.com/how-to-install-pingvin-share-on-your-synology-nas/) - -### 升级 - -因为 Pingvin Share 仍处在开发阶段,在升级前请务必阅读 release notes 避免不可逆的改变 - -#### Docker 升级 - -```bash -docker compose pull -docker compose up -d -``` - -#### Stand-alone 升级 - -1. 停止正在运行的 app - ```bash - pm2 stop pingvin-share-backend pingvin-share-frontend - ``` -2. 重复 [installation guide](#stand-alone-installation) 中的步骤,除了 `git clone` 这一步 - - ```bash - cd pingvin-share - - # 获取最新的版本 - git fetch --tags && git checkout $(git describe --tags `git rev-list --tags --max-count=1`) - - # 启动后端 backend - cd backend - npm run build - pm2 restart pingvin-share-backend - - # 启动前端 frontend - cd ../frontend - npm run build - pm2 restart pingvin-share-frontend - ``` - -### 自定义品牌 - -你可以在管理员配置页面改变网站的名字和 logo - -## 🖤 提交贡献 - -非常欢迎向 Pingvin Share 提交贡献! 请阅读 [contribution guide](/CONTRIBUTING.md) 来提交你的贡献 diff --git a/docs/oauth2-guide.md b/docs/oauth2-guide.md deleted file mode 100644 index 814c5e6..0000000 --- a/docs/oauth2-guide.md +++ /dev/null @@ -1,157 +0,0 @@ -# OAuth 2 Login Guide - -## Config Built-in OAuth 2 Providers - -- [GitHub](#github) -- [Google](#google) -- [Microsoft](#microsoft) -- [Discord](#discord) -- [OpenID Connect](#openid-connect) - -### GitHub - -Please follow the [official guide](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app) to create an OAuth app. - -Redirect URL: `https://<your-domain>/api/oauth/callback/github` - -### Google - -Please follow the [official guide](https://developers.google.com/identity/protocols/oauth2/web-server#prerequisites) to create an OAuth 2.0 App. - -Redirect URL: `https://<your-domain>/api/oauth/callback/google` - -### Microsoft - -Please follow the [official guide](https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app) to register an application. - -> [!IMPORTANT] -> **Microsoft Tenant** you set in the admin panel must match the **supported account types** you set in the Microsoft Entra admin center, otherwise the OAuth login will not work. Refer to the [official documentation](https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols-oidc#find-your-apps-openid-configuration-document-uri) for more details. - -Redirect URL: `https://<your-domain>/api/oauth/callback/microsoft` - -### Discord - -Create an application on [Discord Developer Portal](https://discord.com/developers/applications). - -Redirect URL: `https://<your-domain>/api/oauth/callback/discord` - -### OpenID Connect - -Generic OpenID Connect provider is also supported, we have tested it on Keycloak, Authentik and Casdoor. - -Redirect URL: `https://<your-domain>/api/oauth/callback/oidc` - -## Custom your OAuth 2 Provider - -If our built-in providers don't meet your needs, you can create your own OAuth 2 provider. - -### 1. Create config - -Add your config (client id, client secret, etc.) in [`config.seed.ts`](../backend/prisma/seed/config.seed.ts): - -```ts -const configVariables: ConfigVariables = { - // ... - oauth: { - // ... - "YOUR_PROVIDER_NAME-enabled": { - type: "boolean", - defaultValue: "false", - }, - "YOUR_PROVIDER_NAME-clientId": { - type: "string", - defaultValue: "", - }, - "YOUR_PROVIDER_NAME-clientSecret": { - type: "string", - defaultValue: "", - obscured: true, - }, - } -} -``` - -### 2. Create provider class - -#### Generic OpenID Connect - -If your provider supports OpenID connect, it's extremely easy to extend [`GenericOidcProvider`](../backend/src/oauth/provider/genericOidc.provider.ts) to add a new OpenID Connect provider. - -The [Google provider](../backend/src/oauth/provider/google.provider.ts) and [Microsoft provider](../backend/src/oauth/provider/microsoft.provider.ts) are good examples. - -Here are some discovery URIs for popular providers: - -- Microsoft: `https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration` -- Google: `https://accounts.google.com/.well-known/openid-configuration` -- Apple: `https://appleid.apple.com/.well-known/openid-configuration` -- Gitlab: `https://gitlab.com/.well-known/openid-configuration` -- Huawei: `https://oauth-login.cloud.huawei.com/.well-known/openid-configuration` -- Paypal: `https://www.paypal.com/.well-known/openid-configuration` -- Yahoo: `https://api.login.yahoo.com/.well-known/openid-configuration` - -#### OAuth 2 - -If your provider only supports OAuth 2, you can implement [`OAuthProvider`](../backend/src/oauth/provider/oauthProvider.interface.ts) interface to add a new OAuth 2 provider. - -The [GitHub provider](../backend/src/oauth/provider/github.provider.ts) and [Discord provider](../backend/src/oauth/provider/discord.provider.ts) are good examples. - -### 3. Register provider - -Register your provider in [`OAuthModule`](../backend/src/oauth/oauth.module.ts) and [`OAuthSignInDto`](../backend/src/oauth/dto/oauthSignIn.dto.ts): - -```ts -@Module({ - providers: [ - GitHubProvider, - // your provider - { - provide: "OAUTH_PROVIDERS", - useFactory(github: GitHubProvider, /* your provider */): Record<string, OAuthProvider<unknown>> { - return { - github, - /* your provider */ - }; - }, - inject: [GitHubProvider, /* your provider */], - }, - ], -}) -export class OAuthModule { -} -``` - -```ts -export interface OAuthSignInDto { - provider: 'github' | 'google' | 'microsoft' | 'discord' | 'oidc' /* your provider*/; - providerId: string; - providerUsername: string; - email: string; -} -``` - -### 4. Add frontend icon - -Add an icon in [`oauth.util.tsx`](../frontend/src/utils/oauth.util.tsx). - -```tsx -const getOAuthIcon = (provider: string) => { - return { - 'github': <SiGithub />, - /* your provider */ - }[provider]; -} -``` - -### 5. Add i18n text - -Add keys below to your i18n text in [locale file](../frontend/src/i18n/translations/en-US.ts). - -- `signIn.oauth.YOUR_PROVIDER_NAME` -- `account.card.oauth.YOUR_PROVIDER_NAME` -- `admin.config.oauth.YOUR_PROVIDER_NAME-enabled` -- `admin.config.oauth.YOUR_PROVIDER_NAME-client-id` -- `admin.config.oauth.YOUR_PROVIDER_NAME-client-secret` -- `error.param.provider_YOUR_PROVIDER_NAME` -- Other config keys you defined in step 1 - -Congratulations! 🎉 You have successfully added a new OAuth 2 provider! Pull requests are welcome if you want to share your provider with others. diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json deleted file mode 100644 index 00b0a54..0000000 --- a/frontend/.eslintrc.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": [ - "next", - "eslint-config-next", - "eslint:recommended", - "prettier" - ], - "plugins": ["react"], - "rules": { - "quotes": ["warn", "double", { "allowTemplateLiterals": true }], - "react-hooks/exhaustive-deps": ["off"], - "import/no-anonymous-default-export": ["off"], - "no-unused-vars": ["warn"], - "react/no-unescaped-entities": ["off"], - "@next/next/no-img-element": ["off"] - } -} diff --git a/frontend/.prettierignore b/frontend/.prettierignore deleted file mode 100644 index 2477840..0000000 --- a/frontend/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -/src/i18n/translations/* \ No newline at end of file diff --git a/frontend/next-env.d.ts b/frontend/next-env.d.ts deleted file mode 100644 index 4f11a03..0000000 --- a/frontend/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// <reference types="next" /> -/// <reference types="next/image-types/global" /> - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/frontend/next.config.js b/frontend/next.config.js deleted file mode 100644 index 808c0d5..0000000 --- a/frontend/next.config.js +++ /dev/null @@ -1,24 +0,0 @@ -/** @type {import('next').NextConfig} */ -const { version } = require('./package.json'); - -const withPWA = require("next-pwa")({ - dest: "public", - disable: process.env.NODE_ENV === "development", - reloadOnOnline: false, - runtimeCaching: [ - { - urlPattern: /^https?.*/, - handler: 'NetworkOnly', - }, - ], - reloadOnOnline: false, -}); - -module.exports = withPWA({ - output: "standalone", env: { - VERSION: version, - }, - serverRuntimeConfig: { - apiURL: process.env.API_URL ?? 'http://localhost:8080', - }, -}); diff --git a/frontend/package-lock.json b/frontend/package-lock.json deleted file mode 100644 index d9be754..0000000 --- a/frontend/package-lock.json +++ /dev/null @@ -1,16678 +0,0 @@ -{ - "name": "pingvin-share-frontend", - "version": "0.29.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "pingvin-share-frontend", - "version": "0.29.0", - "dependencies": { - "@emotion/react": "^11.11.4", - "@emotion/server": "^11.11.0", - "@mantine/core": "^6.0.21", - "@mantine/dropzone": "^6.0.21", - "@mantine/form": "^6.0.21", - "@mantine/hooks": "^6.0.21", - "@mantine/modals": "^6.0.21", - "@mantine/next": "^6.0.21", - "@mantine/notifications": "^6.0.21", - "axios": "^1.7.2", - "cookies-next": "^2.1.2", - "file-saver": "^2.0.5", - "jose": "^4.15.5", - "jwt-decode": "^3.1.2", - "markdown-to-jsx": "^7.4.7", - "mime-types": "^2.1.35", - "moment": "^2.30.1", - "next": "^14.2.3", - "next-http-proxy-middleware": "^1.2.6", - "next-pwa": "^5.6.0", - "p-limit": "^4.0.0", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-icons": "^4.12.0", - "react-intl": "^6.6.8", - "sharp": "^0.33.4", - "yup": "^1.4.0" - }, - "devDependencies": { - "@types/mime-types": "^2.1.4", - "@types/node": "20.12.12", - "@types/react": "18.3.2", - "@types/react-dom": "18.3.0", - "@typescript-eslint/parser": "^7.10.0", - "axios": "^1.7.2", - "eslint": "8.57.0", - "eslint-config-next": "^13.5.6", - "eslint-config-prettier": "^8.10.0", - "prettier": "^3.2.5", - "tar": "^6.2.1", - "typescript": "^5.4.5" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", - "dependencies": { - "@babel/types": "^7.23.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", - "dependencies": { - "@babel/compat-data": "^7.19.3", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", - "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", - "dependencies": { - "@babel/types": "^7.19.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", - "dependencies": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", - "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", - "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", - "dependencies": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.19.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.19.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.19.4", - "@babel/plugin-transform-classes": "^7.19.0", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.19.4", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.0", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.4", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", - "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", - "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.5", - "@babel/types": "^7.23.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", - "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", - "dependencies": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" - }, - "node_modules/@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" - }, - "node_modules/@emotion/react": { - "version": "11.11.4", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", - "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "hoist-non-react-statics": "^3.3.1" - }, - "peerDependencies": { - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/serialize": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", - "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", - "dependencies": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", - "csstype": "^3.0.2" - } - }, - "node_modules/@emotion/server": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/server/-/server-11.11.0.tgz", - "integrity": "sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==", - "dependencies": { - "@emotion/utils": "^1.2.1", - "html-tokenize": "^2.0.0", - "multipipe": "^1.0.2", - "through": "^2.3.8" - }, - "peerDependencies": { - "@emotion/css": "^11.0.0-rc.0" - }, - "peerDependenciesMeta": { - "@emotion/css": { - "optional": true - } - } - }, - "node_modules/@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" - }, - "node_modules/@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" - }, - "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.2.2.tgz", - "integrity": "sha512-FaO9KVLFnxknZaGWGmNtjD2CVFuc0u4yeGEofoyXO2wgRA7fLtkngT6UB0vtWQWuhH3iMTZZ/Y89CMeyGfn8pA==" - }, - "node_modules/@floating-ui/dom": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.2.3.tgz", - "integrity": "sha512-lK9cZUrHSJLMVAdCvDqs6Ug8gr0wmqksYiaoj/bxj2gweRQkSuhg2/V6Jswz2KiQ0RAULbqw1oQDJIMpQ5GfGA==", - "dependencies": { - "@floating-ui/core": "^1.2.2" - } - }, - "node_modules/@floating-ui/react": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.19.2.tgz", - "integrity": "sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==", - "dependencies": { - "@floating-ui/react-dom": "^1.3.0", - "aria-hidden": "^1.1.3", - "tabbable": "^6.0.1" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-1.3.0.tgz", - "integrity": "sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==", - "dependencies": { - "@floating-ui/dom": "^1.2.1" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@formatjs/ecma402-abstract": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz", - "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==", - "dependencies": { - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/fast-memoize": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", - "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.7.8", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz", - "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==", - "dependencies": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/icu-skeleton-parser": "1.8.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz", - "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==", - "dependencies": { - "@formatjs/ecma402-abstract": "2.0.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/intl": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.4.tgz", - "integrity": "sha512-56483O+HVcL0c7VucAS2tyH020mt9XTozZO67cwtGg0a7KWDukS/FzW3OnvaHmTHDuYsoPIzO+ZHVfU6fT/bJw==", - "dependencies": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.8", - "@formatjs/intl-displaynames": "6.6.8", - "@formatjs/intl-listformat": "7.5.7", - "intl-messageformat": "10.5.14", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "typescript": "^4.7 || 5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@formatjs/intl-displaynames": { - "version": "6.6.8", - "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.6.8.tgz", - "integrity": "sha512-Lgx6n5KxN16B3Pb05z3NLEBQkGoXnGjkTBNCZI+Cn17YjHJ3fhCeEJJUqRlIZmJdmaXQhjcQVDp6WIiNeRYT5g==", - "dependencies": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/intl-listformat": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.5.7.tgz", - "integrity": "sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==", - "dependencies": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" - } - }, - "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", - "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz", - "integrity": "sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.4.tgz", - "integrity": "sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", - "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "macos": ">=11", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz", - "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "macos": ">=10.13", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz", - "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz", - "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz", - "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz", - "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz", - "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz", - "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.4.tgz", - "integrity": "sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.4.tgz", - "integrity": "sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.4.tgz", - "integrity": "sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.31", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.4.tgz", - "integrity": "sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.4.tgz", - "integrity": "sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.4.tgz", - "integrity": "sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.4.tgz", - "integrity": "sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==", - "cpu": [ - "wasm32" - ], - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.1.1" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.4.tgz", - "integrity": "sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.4.tgz", - "integrity": "sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@mantine/core": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/core/-/core-6.0.21.tgz", - "integrity": "sha512-Kx4RrRfv0I+cOCIcsq/UA2aWcYLyXgW3aluAuW870OdXnbII6qg7RW28D+r9D76SHPxWFKwIKwmcucAG08Divg==", - "dependencies": { - "@floating-ui/react": "^0.19.1", - "@mantine/styles": "6.0.21", - "@mantine/utils": "6.0.21", - "@radix-ui/react-scroll-area": "1.0.2", - "react-remove-scroll": "^2.5.5", - "react-textarea-autosize": "8.3.4" - }, - "peerDependencies": { - "@mantine/hooks": "6.0.21", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@mantine/dropzone": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/dropzone/-/dropzone-6.0.21.tgz", - "integrity": "sha512-v63tL4x7R1CvBNnxJVaVPhBVnQcfROQvyOV0xK/v0ZGNAzFxjJoiCRMGdlBjxnEawM0dRhNs/46ItpBgjQIr6g==", - "dependencies": { - "@mantine/utils": "6.0.21", - "react-dropzone": "14.2.3" - }, - "peerDependencies": { - "@mantine/core": "6.0.21", - "@mantine/hooks": "6.0.21", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@mantine/form": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/form/-/form-6.0.21.tgz", - "integrity": "sha512-d4tlxyZic7MSDnaPx/WliCX1sRFDkUd2nxx4MxxO2T4OSek0YDqTlSBCxeoveu60P+vrQQN5rbbsVsaOJBe4SQ==", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "klona": "^2.0.5" - }, - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@mantine/hooks": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-6.0.21.tgz", - "integrity": "sha512-sYwt5wai25W6VnqHbS5eamey30/HD5dNXaZuaVEAJ2i2bBv8C0cCiczygMDpAFiSYdXoSMRr/SZ2CrrPTzeNew==", - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@mantine/modals": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/modals/-/modals-6.0.21.tgz", - "integrity": "sha512-Gx2D/ZHMUuYF197JKMWey4K9FeGP9rxYp4lmAEXUrjXiST2fEhLZOdiD75KuOHXd1/sYAU9NcNRo9wXrlF/gUA==", - "dependencies": { - "@mantine/utils": "6.0.21" - }, - "peerDependencies": { - "@mantine/core": "6.0.21", - "@mantine/hooks": "6.0.21", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@mantine/next": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/next/-/next-6.0.21.tgz", - "integrity": "sha512-McaVZZsmUol3yY92mSJSgcMQKFST97pVxNtI7Z52YocyuTjPPFXmqxF/TFj24A7noh1wzvRCPjfd9HX66sY+iQ==", - "dependencies": { - "@mantine/ssr": "6.0.21", - "@mantine/styles": "6.0.21" - }, - "peerDependencies": { - "next": "*", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@mantine/notifications": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-6.0.21.tgz", - "integrity": "sha512-qsrqxuJHK8b67sf9Pfk+xyhvpf9jMsivW8vchfnJfjv7yz1lLvezjytMFp4fMDoYhjHnDPOEc/YFockK4muhOw==", - "dependencies": { - "@mantine/utils": "6.0.21", - "react-transition-group": "4.4.2" - }, - "peerDependencies": { - "@mantine/core": "6.0.21", - "@mantine/hooks": "6.0.21", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@mantine/ssr": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/ssr/-/ssr-6.0.21.tgz", - "integrity": "sha512-TVPiz7VxbBntT42UFg4LCRqsv6HM5nvL5d2jBBbFcg9oztJ/5KVGhrtWbu2+kpq/uWWOpmE0sKDs3HQ/qr1PdQ==", - "dependencies": { - "@mantine/styles": "6.0.21", - "html-react-parser": "1.4.12" - }, - "peerDependencies": { - "@emotion/react": ">=11.9.0", - "@emotion/server": ">=11.4.0", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@mantine/styles": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/styles/-/styles-6.0.21.tgz", - "integrity": "sha512-PVtL7XHUiD/B5/kZ/QvZOZZQQOj12QcRs3Q6nPoqaoPcOX5+S7bMZLMH0iLtcGq5OODYk0uxlvuJkOZGoPj8Mg==", - "dependencies": { - "clsx": "1.1.1", - "csstype": "3.0.9" - }, - "peerDependencies": { - "@emotion/react": ">=11.9.0", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@mantine/styles/node_modules/csstype": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", - "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" - }, - "node_modules/@mantine/utils": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/utils/-/utils-6.0.21.tgz", - "integrity": "sha512-33RVDRop5jiWFao3HKd3Yp7A9mEq4HAJxJPTuYm1NkdqX6aTKOQK7wT8v8itVodBp+sb4cJK6ZVdD1UurK/txQ==", - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@next/env": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz", - "integrity": "sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==" - }, - "node_modules/@next/eslint-plugin-next": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.6.tgz", - "integrity": "sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==", - "dev": true, - "dependencies": { - "glob": "7.1.7" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz", - "integrity": "sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz", - "integrity": "sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz", - "integrity": "sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz", - "integrity": "sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz", - "integrity": "sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz", - "integrity": "sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz", - "integrity": "sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz", - "integrity": "sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz", - "integrity": "sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgr/utils": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", - "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "is-glob": "^4.0.3", - "open": "^8.4.0", - "picocolors": "^1.0.0", - "tiny-glob": "^0.2.9", - "tslib": "^2.4.0" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@radix-ui/number": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.0.tgz", - "integrity": "sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==", - "dependencies": { - "@babel/runtime": "^7.13.10" - } - }, - "node_modules/@radix-ui/primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", - "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==", - "dependencies": { - "@babel/runtime": "^7.13.10" - } - }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", - "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-context": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz", - "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-direction": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz", - "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-presence": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", - "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.0", - "@radix-ui/react-use-layout-effect": "1.0.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz", - "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "1.0.1" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-scroll-area": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.2.tgz", - "integrity": "sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/number": "1.0.0", - "@radix-ui/primitive": "1.0.0", - "@radix-ui/react-compose-refs": "1.0.0", - "@radix-ui/react-context": "1.0.0", - "@radix-ui/react-direction": "1.0.0", - "@radix-ui/react-presence": "1.0.0", - "@radix-ui/react-primitive": "1.0.1", - "@radix-ui/react-use-callback-ref": "1.0.0", - "@radix-ui/react-use-layout-effect": "1.0.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-slot": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz", - "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.0" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", - "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", - "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", - "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0" - }, - "peerDependenciesMeta": { - "@types/babel__core": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz", - "integrity": "sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==", - "dev": true - }, - "node_modules/@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", - "dependencies": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" - } - }, - "node_modules/@surma/rollup-plugin-off-main-thread/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" - }, - "node_modules/@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", - "dependencies": { - "@swc/counter": "^0.1.3", - "tslib": "^2.4.0" - } - }, - "node_modules/@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "peer": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "peer": true - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "node_modules/@types/http-proxy": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.3.tgz", - "integrity": "sha512-wIPqXANye5BbORbuh74exbwNzj+UWCwWyeEFJzUQ7Fq3W2NSAy+7x7nX1fgbEypr2/TdKqpeuxLnXWgzN533/Q==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/mime-types": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", - "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, - "node_modules/@types/node": { - "version": "20.12.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", - "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "node_modules/@types/react": { - "version": "18.3.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.2.tgz", - "integrity": "sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==", - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/trusted-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.10.0.tgz", - "integrity": "sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.10.0", - "@typescript-eslint/types": "7.10.0", - "@typescript-eslint/typescript-estree": "7.10.0", - "@typescript-eslint/visitor-keys": "7.10.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz", - "integrity": "sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.10.0", - "@typescript-eslint/visitor-keys": "7.10.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.10.0.tgz", - "integrity": "sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz", - "integrity": "sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.10.0", - "@typescript-eslint/visitor-keys": "7.10.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz", - "integrity": "sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.10.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "peer": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "peer": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "peer": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "peer": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "peer": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "peer": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "peer": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "peer": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "peer": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "peer": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "peer": true - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "peer": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/aria-hidden": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", - "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", - "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.1.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true - }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/attr-accept": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dev": true, - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "engines": { - "node": "*" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", - "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==" - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001620", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", - "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "peer": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clean-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", - "dependencies": { - "del": "^4.1.1" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": ">=4.0.0 <6.0.0" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, - "node_modules/clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookies-next": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-2.1.2.tgz", - "integrity": "sha512-czxcfqVaQlo0Q/3xMgp/2jpspsuLJrIm6D37wlmibP3DAcYT315c8UxQmDMohhAT/GRWpaHzpDEFANBjzTFQGg==", - "dependencies": { - "@types/cookie": "^0.4.1", - "@types/node": "^16.10.2", - "cookie": "^0.4.0" - } - }, - "node_modules/cookies-next/node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "node_modules/cookies-next/node_modules/@types/node": { - "version": "16.11.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.27.tgz", - "integrity": "sha512-C1pD3kgLoZ56Uuy5lhfOxie4aZlA3UMGLX9rXteq4WitEZH6Rl80mwactt9QG0w0gLFlN/kLBTFnGXtDVWvWQw==" - }, - "node_modules/core-js-compat": { - "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", - "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", - "dependencies": { - "browserslist": "^4.21.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/csstype": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", - "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true - }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexer2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.277", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.277.tgz", - "integrity": "sha512-Ej4VyUfGdVY5D2J5WHAVNqrEFBKgeNcX7p/bBQU4x/VKwvnyEvGd62NEkIK3lykLEe9Cg4MCcoWAa+u97o0u/A==" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", - "peer": true - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@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.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "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.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-next": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.5.6.tgz", - "integrity": "sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==", - "dev": true, - "dependencies": { - "@next/eslint-plugin-next": "13.5.6", - "@rushstack/eslint-patch": "^1.3.3", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.28.1", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-next/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/eslint-config-next/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz", - "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.10.0", - "get-tsconfig": "^4.2.0", - "globby": "^13.1.2", - "is-core-module": "^2.10.0", - "is-glob": "^4.0.3", - "synckit": "^0.8.4" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", - "dev": true, - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", - "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.23.2", - "aria-query": "^5.3.0", - "array-includes": "^3.1.7", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "=4.7.0", - "axobject-query": "^3.2.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.15", - "hasown": "^2.0.0", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.34.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", - "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlast": "^1.2.4", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.3", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.17", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7", - "object.hasown": "^1.1.3", - "object.values": "^1.1.7", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.10" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0-canary-7118f5dd7-20230705", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0-canary-7118f5dd7-20230705.tgz", - "integrity": "sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "peer": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-saver": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", - "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" - }, - "node_modules/file-selector": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", - "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", - "dependencies": { - "tslib": "^2.4.0" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", - "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==", - "dev": true, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "peer": true - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/html-dom-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-1.2.0.tgz", - "integrity": "sha512-2HIpFMvvffsXHFUFjso0M9LqM+1Lm22BF+Df2ba+7QHJXjk63pWChEnI6YG27eaWqUdfnh5/Vy+OXrNTtepRsg==", - "dependencies": { - "domhandler": "4.3.1", - "htmlparser2": "7.2.0" - } - }, - "node_modules/html-react-parser": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-1.4.12.tgz", - "integrity": "sha512-nqYQzr4uXh67G9ejAG7djupTHmQvSTgjY83zbXLRfKHJ0F06751jXx6WKSFARDdXxCngo2/7H4Rwtfeowql4gQ==", - "dependencies": { - "domhandler": "4.3.1", - "html-dom-parser": "1.2.0", - "react-property": "2.0.0", - "style-to-js": "1.1.0" - }, - "peerDependencies": { - "react": "0.14 || 15 || 16 || 17 || 18" - } - }, - "node_modules/html-tokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-tokenize/-/html-tokenize-2.0.1.tgz", - "integrity": "sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==", - "dependencies": { - "buffer-from": "~0.1.1", - "inherits": "~2.0.1", - "minimist": "~1.2.5", - "readable-stream": "~1.0.27-1", - "through2": "~0.4.1" - }, - "bin": { - "html-tokenize": "bin/cmd.js" - } - }, - "node_modules/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/idb": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.0.tgz", - "integrity": "sha512-Wsk07aAxDsntgYJY4h0knZJuTxM73eQ4reRAO+Z1liOh8eMCJ/MoDS8fCui1vGT9mnjtl1sOu3I2i/W1swPYZg==" - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/intl-messageformat": { - "version": "10.5.14", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", - "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==", - "dependencies": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.8", - "tslib": "^2.4.0" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jose": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", - "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, - "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", - "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", - "dev": true - }, - "node_modules/language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "dev": true, - "dependencies": { - "language-subtag-registry": "^0.3.20" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "peer": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/markdown-to-jsx": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.7.tgz", - "integrity": "sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==", - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/multipipe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-1.0.2.tgz", - "integrity": "sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==", - "dependencies": { - "duplexer2": "^0.1.2", - "object-assign": "^4.1.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "peer": true - }, - "node_modules/next": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.3.tgz", - "integrity": "sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==", - "dependencies": { - "@next/env": "14.2.3", - "@swc/helpers": "0.5.5", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001579", - "graceful-fs": "^4.2.11", - "postcss": "8.4.31", - "styled-jsx": "5.1.1" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=18.17.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.3", - "@next/swc-darwin-x64": "14.2.3", - "@next/swc-linux-arm64-gnu": "14.2.3", - "@next/swc-linux-arm64-musl": "14.2.3", - "@next/swc-linux-x64-gnu": "14.2.3", - "@next/swc-linux-x64-musl": "14.2.3", - "@next/swc-win32-arm64-msvc": "14.2.3", - "@next/swc-win32-ia32-msvc": "14.2.3", - "@next/swc-win32-x64-msvc": "14.2.3" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next-http-proxy-middleware": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/next-http-proxy-middleware/-/next-http-proxy-middleware-1.2.6.tgz", - "integrity": "sha512-vHmtFLeO+HomU4Fx/CoA4MbLnXya1B17yR5qOmpYZqRjzGa17a9dgXh9ONvquSZdMrIn7bUfjoPLxMkYMtKj3Q==", - "dependencies": { - "@types/http-proxy": "1.17.3", - "http-proxy": "^1.18.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/next-pwa": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/next-pwa/-/next-pwa-5.6.0.tgz", - "integrity": "sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==", - "dependencies": { - "babel-loader": "^8.2.5", - "clean-webpack-plugin": "^4.0.0", - "globby": "^11.0.4", - "terser-webpack-plugin": "^5.3.3", - "workbox-webpack-plugin": "^6.5.4", - "workbox-window": "^6.5.4" - }, - "peerDependencies": { - "next": ">=9.0.0" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.hasown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", - "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/property-expr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", - "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, - "node_modules/react-dropzone": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", - "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", - "dependencies": { - "attr-accept": "^2.2.2", - "file-selector": "^0.6.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">= 10.13" - }, - "peerDependencies": { - "react": ">= 16.8 || 18.0.0" - } - }, - "node_modules/react-icons": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.12.0.tgz", - "integrity": "sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==", - "peerDependencies": { - "react": "*" - } - }, - "node_modules/react-intl": { - "version": "6.6.8", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.8.tgz", - "integrity": "sha512-M0pkhzcgV31h++2901BiRXWl69hp2zPyLxRrSwRjd1ErXbNoubz/f4M6DrRTd4OiSUrT4ajRQzrmtS5plG4FtA==", - "dependencies": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/icu-messageformat-parser": "2.7.8", - "@formatjs/intl": "2.10.4", - "@formatjs/intl-displaynames": "6.6.8", - "@formatjs/intl-listformat": "7.5.7", - "@types/hoist-non-react-statics": "^3.3.1", - "@types/react": "16 || 17 || 18", - "hoist-non-react-statics": "^3.3.2", - "intl-messageformat": "10.5.14", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "react": "^16.6.0 || 17 || 18", - "typescript": "^4.7 || 5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-property": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz", - "integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==" - }, - "node_modules/react-remove-scroll": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", - "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", - "dependencies": { - "react-remove-scroll-bar": "^2.3.3", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", - "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", - "dependencies": { - "react-style-singleton": "^2.2.1", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", - "dependencies": { - "get-nonce": "^1.0.0", - "invariant": "^2.2.4", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-textarea-autosize": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz", - "integrity": "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==", - "dependencies": { - "@babel/runtime": "^7.10.2", - "use-composed-ref": "^1.3.0", - "use-latest": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sharp": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.4.tgz", - "integrity": "sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.6.0" - }, - "engines": { - "libvips": ">=8.15.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.4", - "@img/sharp-darwin-x64": "0.33.4", - "@img/sharp-libvips-darwin-arm64": "1.0.2", - "@img/sharp-libvips-darwin-x64": "1.0.2", - "@img/sharp-libvips-linux-arm": "1.0.2", - "@img/sharp-libvips-linux-arm64": "1.0.2", - "@img/sharp-libvips-linux-s390x": "1.0.2", - "@img/sharp-libvips-linux-x64": "1.0.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", - "@img/sharp-libvips-linuxmusl-x64": "1.0.2", - "@img/sharp-linux-arm": "0.33.4", - "@img/sharp-linux-arm64": "0.33.4", - "@img/sharp-linux-s390x": "0.33.4", - "@img/sharp-linux-x64": "0.33.4", - "@img/sharp-linuxmusl-arm64": "0.33.4", - "@img/sharp-linuxmusl-x64": "0.33.4", - "@img/sharp-wasm32": "0.33.4", - "@img/sharp-win32-ia32": "0.33.4", - "@img/sharp-win32-x64": "0.33.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", - "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/style-to-js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.0.tgz", - "integrity": "sha512-1OqefPDxGrlMwcbfpsTVRyzwdhr4W0uxYQzeA2F1CBc8WG04udg2+ybRnvh3XYL4TdHQrCahLtax2jc8xaE6rA==", - "dependencies": { - "style-to-object": "0.3.0" - } - }, - "node_modules/style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, - "node_modules/styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", - "dependencies": { - "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/synckit": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", - "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", - "dev": true, - "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/tabbable": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.1.1.tgz", - "integrity": "sha512-4kl5w+nCB44EVRdO0g/UGoOp3vlwgycUVtkk/7DPyeLZUCuNFFKCFG6/t/DgHLrUPHjrZg6s5tNm+56Q2B0xyg==" - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", - "dependencies": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.19.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", - "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/through2": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", - "integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==", - "dependencies": { - "readable-stream": "~1.0.17", - "xtend": "~2.1.1" - } - }, - "node_modules/tiny-case": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", - "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" - }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, - "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=" - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", - "dev": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "devOptional": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-composed-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", - "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/use-isomorphic-layout-effect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", - "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-latest": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", - "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", - "dependencies": { - "use-isomorphic-layout-effect": "^1.1.1" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-sidecar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", - "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "peer": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "node_modules/webpack": { - "version": "5.88.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", - "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", - "peer": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "peer": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "peer": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dev": true, - "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/workbox-background-sync": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz", - "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==", - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-broadcast-update": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz", - "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==", - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-build": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz", - "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==", - "dependencies": { - "@apideck/better-ajv-errors": "^0.3.1", - "@babel/core": "^7.11.1", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", - "ajv": "^8.6.0", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "lodash": "^4.17.20", - "pretty-bytes": "^5.3.0", - "rollup": "^2.43.1", - "rollup-plugin-terser": "^7.0.0", - "source-map": "^0.8.0-beta.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "6.5.4", - "workbox-broadcast-update": "6.5.4", - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-google-analytics": "6.5.4", - "workbox-navigation-preload": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-range-requests": "6.5.4", - "workbox-recipes": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4", - "workbox-streams": "6.5.4", - "workbox-sw": "6.5.4", - "workbox-window": "6.5.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", - "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", - "dependencies": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "ajv": ">=8" - } - }, - "node_modules/workbox-build/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/workbox-build/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/workbox-build/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/workbox-cacheable-response": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz", - "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==", - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-core": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz", - "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==" - }, - "node_modules/workbox-expiration": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", - "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-google-analytics": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz", - "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==", - "dependencies": { - "workbox-background-sync": "6.5.4", - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "node_modules/workbox-navigation-preload": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz", - "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==", - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-precaching": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", - "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", - "dependencies": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "node_modules/workbox-range-requests": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz", - "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==", - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-recipes": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", - "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", - "dependencies": { - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "node_modules/workbox-routing": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", - "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-strategies": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", - "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-streams": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", - "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", - "dependencies": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4" - } - }, - "node_modules/workbox-sw": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz", - "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==" - }, - "node_modules/workbox-webpack-plugin": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz", - "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==", - "dependencies": { - "fast-json-stable-stringify": "^2.1.0", - "pretty-bytes": "^5.4.1", - "upath": "^1.2.0", - "webpack-sources": "^1.4.3", - "workbox-build": "6.5.4" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.9.0" - } - }, - "node_modules/workbox-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/workbox-window": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", - "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", - "dependencies": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "6.5.4" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", - "dependencies": { - "object-keys": "~0.4.0" - }, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/xtend/node_modules/object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yup": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/yup/-/yup-1.4.0.tgz", - "integrity": "sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==", - "dependencies": { - "property-expr": "^2.0.5", - "tiny-case": "^1.0.3", - "toposort": "^2.0.2", - "type-fest": "^2.19.0" - } - }, - "node_modules/yup/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, - "@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "requires": { - "@jridgewell/trace-mapping": "^0.3.0" - } - }, - "@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "requires": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/compat-data": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" - }, - "@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", - "requires": { - "@babel/types": "^7.23.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", - "requires": { - "@babel/compat-data": "^7.19.3", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", - "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==" - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", - "requires": { - "@babel/types": "^7.19.4" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==" - }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - }, - "@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - } - }, - "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - } - }, - "@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", - "requires": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", - "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - } - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/preset-env": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", - "requires": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.19.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.19.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.19.4", - "@babel/plugin-transform-classes": "^7.19.0", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.19.4", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.0", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.4", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", - "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", - "requires": { - "regenerator-runtime": "^0.14.0" - } - }, - "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - } - }, - "@babel/traverse": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", - "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", - "requires": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.5", - "@babel/types": "^7.23.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - } - } - }, - "@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", - "requires": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - } - }, - "@emnapi/runtime": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", - "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", - "optional": true, - "requires": { - "tslib": "^2.4.0" - } - }, - "@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.2.0" - } - }, - "@emotion/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", - "requires": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "stylis": "4.2.0" - } - }, - "@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" - }, - "@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" - }, - "@emotion/react": { - "version": "11.11.4", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", - "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", - "requires": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "hoist-non-react-statics": "^3.3.1" - } - }, - "@emotion/serialize": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", - "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", - "requires": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", - "csstype": "^3.0.2" - } - }, - "@emotion/server": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/server/-/server-11.11.0.tgz", - "integrity": "sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==", - "requires": { - "@emotion/utils": "^1.2.1", - "html-tokenize": "^2.0.0", - "multipipe": "^1.0.2", - "through": "^2.3.8" - } - }, - "@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" - }, - "@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" - }, - "@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", - "requires": {} - }, - "@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" - }, - "@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true - }, - "@floating-ui/core": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.2.2.tgz", - "integrity": "sha512-FaO9KVLFnxknZaGWGmNtjD2CVFuc0u4yeGEofoyXO2wgRA7fLtkngT6UB0vtWQWuhH3iMTZZ/Y89CMeyGfn8pA==" - }, - "@floating-ui/dom": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.2.3.tgz", - "integrity": "sha512-lK9cZUrHSJLMVAdCvDqs6Ug8gr0wmqksYiaoj/bxj2gweRQkSuhg2/V6Jswz2KiQ0RAULbqw1oQDJIMpQ5GfGA==", - "requires": { - "@floating-ui/core": "^1.2.2" - } - }, - "@floating-ui/react": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.19.2.tgz", - "integrity": "sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==", - "requires": { - "@floating-ui/react-dom": "^1.3.0", - "aria-hidden": "^1.1.3", - "tabbable": "^6.0.1" - } - }, - "@floating-ui/react-dom": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-1.3.0.tgz", - "integrity": "sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==", - "requires": { - "@floating-ui/dom": "^1.2.1" - } - }, - "@formatjs/ecma402-abstract": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz", - "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==", - "requires": { - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" - } - }, - "@formatjs/fast-memoize": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", - "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", - "requires": { - "tslib": "^2.4.0" - } - }, - "@formatjs/icu-messageformat-parser": { - "version": "2.7.8", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz", - "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==", - "requires": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/icu-skeleton-parser": "1.8.2", - "tslib": "^2.4.0" - } - }, - "@formatjs/icu-skeleton-parser": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz", - "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==", - "requires": { - "@formatjs/ecma402-abstract": "2.0.0", - "tslib": "^2.4.0" - } - }, - "@formatjs/intl": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.4.tgz", - "integrity": "sha512-56483O+HVcL0c7VucAS2tyH020mt9XTozZO67cwtGg0a7KWDukS/FzW3OnvaHmTHDuYsoPIzO+ZHVfU6fT/bJw==", - "requires": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.8", - "@formatjs/intl-displaynames": "6.6.8", - "@formatjs/intl-listformat": "7.5.7", - "intl-messageformat": "10.5.14", - "tslib": "^2.4.0" - } - }, - "@formatjs/intl-displaynames": { - "version": "6.6.8", - "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.6.8.tgz", - "integrity": "sha512-Lgx6n5KxN16B3Pb05z3NLEBQkGoXnGjkTBNCZI+Cn17YjHJ3fhCeEJJUqRlIZmJdmaXQhjcQVDp6WIiNeRYT5g==", - "requires": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" - } - }, - "@formatjs/intl-listformat": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.5.7.tgz", - "integrity": "sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==", - "requires": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/intl-localematcher": "0.5.4", - "tslib": "^2.4.0" - } - }, - "@formatjs/intl-localematcher": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", - "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", - "requires": { - "tslib": "^2.4.0" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, - "@img/sharp-darwin-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz", - "integrity": "sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==", - "optional": true, - "requires": { - "@img/sharp-libvips-darwin-arm64": "1.0.2" - } - }, - "@img/sharp-darwin-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.4.tgz", - "integrity": "sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==", - "optional": true, - "requires": { - "@img/sharp-libvips-darwin-x64": "1.0.2" - } - }, - "@img/sharp-libvips-darwin-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", - "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", - "optional": true - }, - "@img/sharp-libvips-darwin-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz", - "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==", - "optional": true - }, - "@img/sharp-libvips-linux-arm": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz", - "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==", - "optional": true - }, - "@img/sharp-libvips-linux-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz", - "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==", - "optional": true - }, - "@img/sharp-libvips-linux-s390x": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz", - "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==", - "optional": true - }, - "@img/sharp-libvips-linux-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz", - "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==", - "optional": true - }, - "@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz", - "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==", - "optional": true - }, - "@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz", - "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==", - "optional": true - }, - "@img/sharp-linux-arm": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.4.tgz", - "integrity": "sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==", - "optional": true, - "requires": { - "@img/sharp-libvips-linux-arm": "1.0.2" - } - }, - "@img/sharp-linux-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.4.tgz", - "integrity": "sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==", - "optional": true, - "requires": { - "@img/sharp-libvips-linux-arm64": "1.0.2" - } - }, - "@img/sharp-linux-s390x": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.4.tgz", - "integrity": "sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==", - "optional": true, - "requires": { - "@img/sharp-libvips-linux-s390x": "1.0.2" - } - }, - "@img/sharp-linux-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.4.tgz", - "integrity": "sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==", - "optional": true, - "requires": { - "@img/sharp-libvips-linux-x64": "1.0.2" - } - }, - "@img/sharp-linuxmusl-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.4.tgz", - "integrity": "sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==", - "optional": true, - "requires": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2" - } - }, - "@img/sharp-linuxmusl-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.4.tgz", - "integrity": "sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==", - "optional": true, - "requires": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.2" - } - }, - "@img/sharp-wasm32": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.4.tgz", - "integrity": "sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==", - "optional": true, - "requires": { - "@emnapi/runtime": "^1.1.1" - } - }, - "@img/sharp-win32-ia32": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.4.tgz", - "integrity": "sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==", - "optional": true - }, - "@img/sharp-win32-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.4.tgz", - "integrity": "sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==", - "optional": true - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - }, - "@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@mantine/core": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/core/-/core-6.0.21.tgz", - "integrity": "sha512-Kx4RrRfv0I+cOCIcsq/UA2aWcYLyXgW3aluAuW870OdXnbII6qg7RW28D+r9D76SHPxWFKwIKwmcucAG08Divg==", - "requires": { - "@floating-ui/react": "^0.19.1", - "@mantine/styles": "6.0.21", - "@mantine/utils": "6.0.21", - "@radix-ui/react-scroll-area": "1.0.2", - "react-remove-scroll": "^2.5.5", - "react-textarea-autosize": "8.3.4" - } - }, - "@mantine/dropzone": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/dropzone/-/dropzone-6.0.21.tgz", - "integrity": "sha512-v63tL4x7R1CvBNnxJVaVPhBVnQcfROQvyOV0xK/v0ZGNAzFxjJoiCRMGdlBjxnEawM0dRhNs/46ItpBgjQIr6g==", - "requires": { - "@mantine/utils": "6.0.21", - "react-dropzone": "14.2.3" - } - }, - "@mantine/form": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/form/-/form-6.0.21.tgz", - "integrity": "sha512-d4tlxyZic7MSDnaPx/WliCX1sRFDkUd2nxx4MxxO2T4OSek0YDqTlSBCxeoveu60P+vrQQN5rbbsVsaOJBe4SQ==", - "requires": { - "fast-deep-equal": "^3.1.3", - "klona": "^2.0.5" - } - }, - "@mantine/hooks": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-6.0.21.tgz", - "integrity": "sha512-sYwt5wai25W6VnqHbS5eamey30/HD5dNXaZuaVEAJ2i2bBv8C0cCiczygMDpAFiSYdXoSMRr/SZ2CrrPTzeNew==", - "requires": {} - }, - "@mantine/modals": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/modals/-/modals-6.0.21.tgz", - "integrity": "sha512-Gx2D/ZHMUuYF197JKMWey4K9FeGP9rxYp4lmAEXUrjXiST2fEhLZOdiD75KuOHXd1/sYAU9NcNRo9wXrlF/gUA==", - "requires": { - "@mantine/utils": "6.0.21" - } - }, - "@mantine/next": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/next/-/next-6.0.21.tgz", - "integrity": "sha512-McaVZZsmUol3yY92mSJSgcMQKFST97pVxNtI7Z52YocyuTjPPFXmqxF/TFj24A7noh1wzvRCPjfd9HX66sY+iQ==", - "requires": { - "@mantine/ssr": "6.0.21", - "@mantine/styles": "6.0.21" - } - }, - "@mantine/notifications": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-6.0.21.tgz", - "integrity": "sha512-qsrqxuJHK8b67sf9Pfk+xyhvpf9jMsivW8vchfnJfjv7yz1lLvezjytMFp4fMDoYhjHnDPOEc/YFockK4muhOw==", - "requires": { - "@mantine/utils": "6.0.21", - "react-transition-group": "4.4.2" - } - }, - "@mantine/ssr": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/ssr/-/ssr-6.0.21.tgz", - "integrity": "sha512-TVPiz7VxbBntT42UFg4LCRqsv6HM5nvL5d2jBBbFcg9oztJ/5KVGhrtWbu2+kpq/uWWOpmE0sKDs3HQ/qr1PdQ==", - "requires": { - "@mantine/styles": "6.0.21", - "html-react-parser": "1.4.12" - } - }, - "@mantine/styles": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/styles/-/styles-6.0.21.tgz", - "integrity": "sha512-PVtL7XHUiD/B5/kZ/QvZOZZQQOj12QcRs3Q6nPoqaoPcOX5+S7bMZLMH0iLtcGq5OODYk0uxlvuJkOZGoPj8Mg==", - "requires": { - "clsx": "1.1.1", - "csstype": "3.0.9" - }, - "dependencies": { - "csstype": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", - "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" - } - } - }, - "@mantine/utils": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/@mantine/utils/-/utils-6.0.21.tgz", - "integrity": "sha512-33RVDRop5jiWFao3HKd3Yp7A9mEq4HAJxJPTuYm1NkdqX6aTKOQK7wT8v8itVodBp+sb4cJK6ZVdD1UurK/txQ==", - "requires": {} - }, - "@next/env": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz", - "integrity": "sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==" - }, - "@next/eslint-plugin-next": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.6.tgz", - "integrity": "sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==", - "dev": true, - "requires": { - "glob": "7.1.7" - } - }, - "@next/swc-darwin-arm64": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz", - "integrity": "sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==", - "optional": true - }, - "@next/swc-darwin-x64": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz", - "integrity": "sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==", - "optional": true - }, - "@next/swc-linux-arm64-gnu": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz", - "integrity": "sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==", - "optional": true - }, - "@next/swc-linux-arm64-musl": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz", - "integrity": "sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==", - "optional": true - }, - "@next/swc-linux-x64-gnu": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz", - "integrity": "sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==", - "optional": true - }, - "@next/swc-linux-x64-musl": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz", - "integrity": "sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==", - "optional": true - }, - "@next/swc-win32-arm64-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz", - "integrity": "sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==", - "optional": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz", - "integrity": "sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==", - "optional": true - }, - "@next/swc-win32-x64-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz", - "integrity": "sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==", - "optional": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@pkgr/utils": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", - "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "is-glob": "^4.0.3", - "open": "^8.4.0", - "picocolors": "^1.0.0", - "tiny-glob": "^0.2.9", - "tslib": "^2.4.0" - } - }, - "@radix-ui/number": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.0.tgz", - "integrity": "sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", - "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-compose-refs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", - "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-context": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz", - "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-direction": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz", - "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-presence": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", - "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.0", - "@radix-ui/react-use-layout-effect": "1.0.0" - } - }, - "@radix-ui/react-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz", - "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "1.0.1" - } - }, - "@radix-ui/react-scroll-area": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.2.tgz", - "integrity": "sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/number": "1.0.0", - "@radix-ui/primitive": "1.0.0", - "@radix-ui/react-compose-refs": "1.0.0", - "@radix-ui/react-context": "1.0.0", - "@radix-ui/react-direction": "1.0.0", - "@radix-ui/react-presence": "1.0.0", - "@radix-ui/react-primitive": "1.0.1", - "@radix-ui/react-use-callback-ref": "1.0.0", - "@radix-ui/react-use-layout-effect": "1.0.0" - } - }, - "@radix-ui/react-slot": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz", - "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.0" - } - }, - "@radix-ui/react-use-callback-ref": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", - "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@radix-ui/react-use-layout-effect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", - "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - } - }, - "@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - } - }, - "@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "requires": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - } - } - }, - "@rushstack/eslint-patch": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz", - "integrity": "sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==", - "dev": true - }, - "@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", - "requires": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" - }, - "dependencies": { - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - } - } - }, - "@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" - }, - "@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", - "requires": { - "@swc/counter": "^0.1.3", - "tslib": "^2.4.0" - } - }, - "@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", - "peer": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "peer": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "peer": true - }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "@types/http-proxy": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.3.tgz", - "integrity": "sha512-wIPqXANye5BbORbuh74exbwNzj+UWCwWyeEFJzUQ7Fq3W2NSAy+7x7nX1fgbEypr2/TdKqpeuxLnXWgzN533/Q==", - "requires": { - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@types/mime-types": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", - "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, - "@types/node": { - "version": "20.12.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", - "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", - "requires": { - "undici-types": "~5.26.4" - } - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "@types/react": { - "version": "18.3.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.2.tgz", - "integrity": "sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==", - "requires": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "requires": { - "@types/node": "*" - } - }, - "@types/trusted-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" - }, - "@typescript-eslint/parser": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.10.0.tgz", - "integrity": "sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "7.10.0", - "@typescript-eslint/types": "7.10.0", - "@typescript-eslint/typescript-estree": "7.10.0", - "@typescript-eslint/visitor-keys": "7.10.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz", - "integrity": "sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "7.10.0", - "@typescript-eslint/visitor-keys": "7.10.0" - } - }, - "@typescript-eslint/types": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.10.0.tgz", - "integrity": "sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz", - "integrity": "sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==", - "dev": true, - "requires": { - "@typescript-eslint/types": "7.10.0", - "@typescript-eslint/visitor-keys": "7.10.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz", - "integrity": "sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "7.10.0", - "eslint-visitor-keys": "^3.4.3" - } - }, - "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "peer": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "peer": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "peer": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "peer": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "peer": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "peer": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "peer": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "peer": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "peer": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "peer": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "peer": true - }, - "acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" - }, - "acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "peer": true, - "requires": {} - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "aria-hidden": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", - "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", - "requires": { - "tslib": "^2.0.0" - } - }, - "aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "requires": { - "dequal": "^2.0.3" - } - }, - "array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "requires": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - } - }, - "array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.tosorted": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", - "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.1.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "requires": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - } - }, - "ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - }, - "attr-accept": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" - }, - "available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "requires": { - "possible-typed-array-names": "^1.0.0" - } - }, - "axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", - "dev": true - }, - "axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", - "dev": true, - "requires": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dev": true, - "requires": { - "dequal": "^2.0.3" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "requires": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "requires": { - "fill-range": "^7.1.1" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, - "buffer-from": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", - "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==" - }, - "builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==" - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "requires": { - "streamsearch": "^1.1.0" - } - }, - "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "caniuse-lite": { - "version": "1.0.30001620", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", - "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==" - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "peer": true - }, - "clean-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", - "requires": { - "del": "^4.1.1" - } - }, - "client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, - "clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" - }, - "color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "requires": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "cookies-next": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-2.1.2.tgz", - "integrity": "sha512-czxcfqVaQlo0Q/3xMgp/2jpspsuLJrIm6D37wlmibP3DAcYT315c8UxQmDMohhAT/GRWpaHzpDEFANBjzTFQGg==", - "requires": { - "@types/cookie": "^0.4.1", - "@types/node": "^16.10.2", - "cookie": "^0.4.0" - }, - "dependencies": { - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "@types/node": { - "version": "16.11.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.27.tgz", - "integrity": "sha512-C1pD3kgLoZ56Uuy5lhfOxie4aZlA3UMGLX9rXteq4WitEZH6Rl80mwactt9QG0w0gLFlN/kLBTFnGXtDVWvWQw==" - } - } - }, - "core-js-compat": { - "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", - "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", - "requires": { - "browserslist": "^4.21.4" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - }, - "csstype": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", - "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" - }, - "damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true - }, - "data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, - "define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true - }, - "detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" - }, - "detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - } - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "requires": { - "readable-stream": "^2.0.2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "requires": { - "jake": "^10.8.5" - } - }, - "electron-to-chromium": { - "version": "1.4.277", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.277.tgz", - "integrity": "sha512-Ej4VyUfGdVY5D2J5WHAVNqrEFBKgeNcX7p/bBQU4x/VKwvnyEvGd62NEkIK3lykLEe9Cg4MCcoWAa+u97o0u/A==" - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - }, - "enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "requires": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - } - }, - "es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "requires": { - "get-intrinsic": "^1.2.4" - } - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" - }, - "es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.2" - } - }, - "es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", - "peer": true - }, - "es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "requires": { - "es-errors": "^1.3.0" - } - }, - "es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "requires": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - } - }, - "es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "requires": { - "hasown": "^2.0.0" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@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.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "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.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - } - } - }, - "eslint-config-next": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.5.6.tgz", - "integrity": "sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==", - "dev": true, - "requires": { - "@next/eslint-plugin-next": "13.5.6", - "@rushstack/eslint-patch": "^1.3.3", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.28.1", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" - }, - "dependencies": { - "@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - } - }, - "@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", - "dev": true, - "requires": {} - }, - "eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - } - } - }, - "eslint-import-resolver-typescript": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz", - "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.10.0", - "get-tsconfig": "^4.2.0", - "globby": "^13.1.2", - "is-core-module": "^2.10.0", - "is-glob": "^4.0.3", - "synckit": "^0.8.4" - }, - "dependencies": { - "globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - } - } - }, - "eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", - "dev": true, - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, - "requires": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", - "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.23.2", - "aria-query": "^5.3.0", - "array-includes": "^3.1.7", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "=4.7.0", - "axobject-query": "^3.2.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.15", - "hasown": "^2.0.0", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7" - } - }, - "eslint-plugin-react": { - "version": "7.34.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", - "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", - "dev": true, - "requires": { - "array-includes": "^3.1.7", - "array.prototype.findlast": "^1.2.4", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.3", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.17", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7", - "object.hasown": "^1.1.3", - "object.values": "^1.1.7", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.10" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "eslint-plugin-react-hooks": { - "version": "5.0.0-canary-7118f5dd7-20230705", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0-canary-7118f5dd7-20230705.tgz", - "integrity": "sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==", - "dev": true, - "requires": {} - }, - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - }, - "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "peer": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-saver": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", - "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" - }, - "file-selector": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", - "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", - "requires": { - "tslib": "^2.4.0" - } - }, - "filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "requires": { - "minimatch": "^5.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - }, - "function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, - "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - }, - "get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "requires": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - } - }, - "get-tsconfig": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", - "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==", - "dev": true - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "peer": true - }, - "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "requires": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - } - }, - "globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "requires": { - "has-symbols": "^1.0.3" - } - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "requires": { - "function-bind": "^1.1.2" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } - }, - "html-dom-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-1.2.0.tgz", - "integrity": "sha512-2HIpFMvvffsXHFUFjso0M9LqM+1Lm22BF+Df2ba+7QHJXjk63pWChEnI6YG27eaWqUdfnh5/Vy+OXrNTtepRsg==", - "requires": { - "domhandler": "4.3.1", - "htmlparser2": "7.2.0" - } - }, - "html-react-parser": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-1.4.12.tgz", - "integrity": "sha512-nqYQzr4uXh67G9ejAG7djupTHmQvSTgjY83zbXLRfKHJ0F06751jXx6WKSFARDdXxCngo2/7H4Rwtfeowql4gQ==", - "requires": { - "domhandler": "4.3.1", - "html-dom-parser": "1.2.0", - "react-property": "2.0.0", - "style-to-js": "1.1.0" - } - }, - "html-tokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-tokenize/-/html-tokenize-2.0.1.tgz", - "integrity": "sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==", - "requires": { - "buffer-from": "~0.1.1", - "inherits": "~2.0.1", - "minimist": "~1.2.5", - "readable-stream": "~1.0.27-1", - "through2": "~0.4.1" - } - }, - "htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "idb": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.0.tgz", - "integrity": "sha512-Wsk07aAxDsntgYJY4h0knZJuTxM73eQ4reRAO+Z1liOh8eMCJ/MoDS8fCui1vGT9mnjtl1sOu3I2i/W1swPYZg==" - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - }, - "internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "requires": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - } - }, - "intl-messageformat": { - "version": "10.5.14", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", - "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==", - "requires": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.8", - "tslib": "^2.4.0" - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - }, - "is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "requires": { - "hasown": "^2.0.0" - } - }, - "is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "requires": { - "is-typed-array": "^1.1.13" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" - }, - "is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==" - }, - "is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "requires": { - "call-bind": "^1.0.7" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "requires": { - "which-typed-array": "^1.1.14" - } - }, - "is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" - } - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "requires": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - } - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jose": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", - "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==" - }, - "jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "requires": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - } - }, - "jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" - }, - "language-subtag-registry": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", - "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", - "dev": true - }, - "language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "dev": true, - "requires": { - "language-subtag-registry": "^0.3.20" - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "peer": true - }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "dependencies": { - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - } - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "markdown-to-jsx": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.7.tgz", - "integrity": "sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==", - "requires": {} - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "multipipe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-1.0.2.tgz", - "integrity": "sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==", - "requires": { - "duplexer2": "^0.1.2", - "object-assign": "^4.1.0" - } - }, - "nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "peer": true - }, - "next": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.3.tgz", - "integrity": "sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==", - "requires": { - "@next/env": "14.2.3", - "@next/swc-darwin-arm64": "14.2.3", - "@next/swc-darwin-x64": "14.2.3", - "@next/swc-linux-arm64-gnu": "14.2.3", - "@next/swc-linux-arm64-musl": "14.2.3", - "@next/swc-linux-x64-gnu": "14.2.3", - "@next/swc-linux-x64-musl": "14.2.3", - "@next/swc-win32-arm64-msvc": "14.2.3", - "@next/swc-win32-ia32-msvc": "14.2.3", - "@next/swc-win32-x64-msvc": "14.2.3", - "@swc/helpers": "0.5.5", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001579", - "graceful-fs": "^4.2.11", - "postcss": "8.4.31", - "styled-jsx": "5.1.1" - } - }, - "next-http-proxy-middleware": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/next-http-proxy-middleware/-/next-http-proxy-middleware-1.2.6.tgz", - "integrity": "sha512-vHmtFLeO+HomU4Fx/CoA4MbLnXya1B17yR5qOmpYZqRjzGa17a9dgXh9ONvquSZdMrIn7bUfjoPLxMkYMtKj3Q==", - "requires": { - "@types/http-proxy": "1.17.3", - "http-proxy": "^1.18.1" - } - }, - "next-pwa": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/next-pwa/-/next-pwa-5.6.0.tgz", - "integrity": "sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==", - "requires": { - "babel-loader": "^8.2.5", - "clean-webpack-plugin": "^4.0.0", - "globby": "^11.0.4", - "terser-webpack-plugin": "^5.3.3", - "workbox-webpack-plugin": "^6.5.4", - "workbox-window": "^6.5.4" - } - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "requires": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - } - }, - "object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - } - }, - "object.hasown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", - "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", - "dev": true, - "requires": { - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - } - }, - "object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - } - }, - "p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "requires": { - "yocto-queue": "^1.0.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - }, - "dependencies": { - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - } - } - }, - "possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" - }, - "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", - "dev": true - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "property-expr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", - "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "requires": { - "loose-envify": "^1.1.0" - } - }, - "react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - } - }, - "react-dropzone": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", - "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", - "requires": { - "attr-accept": "^2.2.2", - "file-selector": "^0.6.0", - "prop-types": "^15.8.1" - } - }, - "react-icons": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.12.0.tgz", - "integrity": "sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==", - "requires": {} - }, - "react-intl": { - "version": "6.6.8", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.8.tgz", - "integrity": "sha512-M0pkhzcgV31h++2901BiRXWl69hp2zPyLxRrSwRjd1ErXbNoubz/f4M6DrRTd4OiSUrT4ajRQzrmtS5plG4FtA==", - "requires": { - "@formatjs/ecma402-abstract": "2.0.0", - "@formatjs/icu-messageformat-parser": "2.7.8", - "@formatjs/intl": "2.10.4", - "@formatjs/intl-displaynames": "6.6.8", - "@formatjs/intl-listformat": "7.5.7", - "@types/hoist-non-react-statics": "^3.3.1", - "@types/react": "16 || 17 || 18", - "hoist-non-react-statics": "^3.3.2", - "intl-messageformat": "10.5.14", - "tslib": "^2.4.0" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "react-property": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz", - "integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==" - }, - "react-remove-scroll": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", - "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", - "requires": { - "react-remove-scroll-bar": "^2.3.3", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - } - }, - "react-remove-scroll-bar": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", - "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", - "requires": { - "react-style-singleton": "^2.2.1", - "tslib": "^2.0.0" - } - }, - "react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", - "requires": { - "get-nonce": "^1.0.0", - "invariant": "^2.2.4", - "tslib": "^2.0.0" - } - }, - "react-textarea-autosize": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz", - "integrity": "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==", - "requires": { - "@babel/runtime": "^7.10.2", - "use-composed-ref": "^1.3.0", - "use-latest": "^1.2.1" - } - }, - "react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "requires": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - } - }, - "regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" - }, - "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - } - } - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "requires": { - "fsevents": "~2.3.2" - } - }, - "rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "requires": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "dependencies": { - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "requires": { - "randombytes": "^2.1.0" - } - } - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "requires": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - } - }, - "scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "requires": { - "loose-envify": "^1.1.0" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" - }, - "serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, - "set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - } - }, - "sharp": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.4.tgz", - "integrity": "sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==", - "requires": { - "@img/sharp-darwin-arm64": "0.33.4", - "@img/sharp-darwin-x64": "0.33.4", - "@img/sharp-libvips-darwin-arm64": "1.0.2", - "@img/sharp-libvips-darwin-x64": "1.0.2", - "@img/sharp-libvips-linux-arm": "1.0.2", - "@img/sharp-libvips-linux-arm64": "1.0.2", - "@img/sharp-libvips-linux-s390x": "1.0.2", - "@img/sharp-libvips-linux-x64": "1.0.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", - "@img/sharp-libvips-linuxmusl-x64": "1.0.2", - "@img/sharp-linux-arm": "0.33.4", - "@img/sharp-linux-arm64": "0.33.4", - "@img/sharp-linux-s390x": "0.33.4", - "@img/sharp-linux-x64": "0.33.4", - "@img/sharp-linuxmusl-arm64": "0.33.4", - "@img/sharp-linuxmusl-x64": "0.33.4", - "@img/sharp-wasm32": "0.33.4", - "@img/sharp-win32-ia32": "0.33.4", - "@img/sharp-win32-x64": "0.33.4", - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.6.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - } - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - } - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - }, - "string.prototype.matchall": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", - "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" - } - }, - "string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - }, - "strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==" - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "style-to-js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.0.tgz", - "integrity": "sha512-1OqefPDxGrlMwcbfpsTVRyzwdhr4W0uxYQzeA2F1CBc8WG04udg2+ybRnvh3XYL4TdHQrCahLtax2jc8xaE6rA==", - "requires": { - "style-to-object": "0.3.0" - } - }, - "style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "requires": { - "inline-style-parser": "0.1.1" - } - }, - "styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", - "requires": { - "client-only": "0.0.1" - } - }, - "stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "synckit": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", - "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", - "dev": true, - "requires": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.4.0" - } - }, - "tabbable": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.1.1.tgz", - "integrity": "sha512-4kl5w+nCB44EVRdO0g/UGoOp3vlwgycUVtkk/7DPyeLZUCuNFFKCFG6/t/DgHLrUPHjrZg6s5tNm+56Q2B0xyg==" - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - }, - "tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - } - } - }, - "temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" - }, - "tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", - "requires": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "dependencies": { - "type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" - } - } - }, - "terser": { - "version": "5.19.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", - "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", - "requires": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } - }, - "terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "requires": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "through2": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", - "integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==", - "requires": { - "readable-stream": "~1.0.17", - "xtend": "~2.1.1" - } - }, - "tiny-case": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", - "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" - }, - "tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, - "requires": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=" - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "requires": { - "punycode": "^2.1.0" - } - }, - "ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", - "dev": true, - "requires": {} - }, - "tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - } - }, - "typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "devOptional": true - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" - }, - "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", - "requires": { - "tslib": "^2.0.0" - } - }, - "use-composed-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", - "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", - "requires": {} - }, - "use-isomorphic-layout-effect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", - "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", - "requires": {} - }, - "use-latest": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", - "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", - "requires": { - "use-isomorphic-layout-effect": "^1.1.1" - } - }, - "use-sidecar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", - "requires": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "peer": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "webpack": { - "version": "5.88.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", - "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", - "peer": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "peer": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "peer": true - }, - "schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "peer": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "peer": true - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dev": true, - "requires": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - } - } - }, - "which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "requires": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - } - }, - "which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - } - }, - "workbox-background-sync": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz", - "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==", - "requires": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" - } - }, - "workbox-broadcast-update": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz", - "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==", - "requires": { - "workbox-core": "6.5.4" - } - }, - "workbox-build": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz", - "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==", - "requires": { - "@apideck/better-ajv-errors": "^0.3.1", - "@babel/core": "^7.11.1", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", - "ajv": "^8.6.0", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "lodash": "^4.17.20", - "pretty-bytes": "^5.3.0", - "rollup": "^2.43.1", - "rollup-plugin-terser": "^7.0.0", - "source-map": "^0.8.0-beta.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "6.5.4", - "workbox-broadcast-update": "6.5.4", - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-google-analytics": "6.5.4", - "workbox-navigation-preload": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-range-requests": "6.5.4", - "workbox-recipes": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4", - "workbox-streams": "6.5.4", - "workbox-sw": "6.5.4", - "workbox-window": "6.5.4" - }, - "dependencies": { - "@apideck/better-ajv-errors": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", - "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", - "requires": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - } - }, - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "requires": { - "whatwg-url": "^7.0.0" - } - } - } - }, - "workbox-cacheable-response": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz", - "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==", - "requires": { - "workbox-core": "6.5.4" - } - }, - "workbox-core": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz", - "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==" - }, - "workbox-expiration": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", - "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", - "requires": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" - } - }, - "workbox-google-analytics": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz", - "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==", - "requires": { - "workbox-background-sync": "6.5.4", - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "workbox-navigation-preload": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz", - "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==", - "requires": { - "workbox-core": "6.5.4" - } - }, - "workbox-precaching": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", - "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", - "requires": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "workbox-range-requests": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz", - "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==", - "requires": { - "workbox-core": "6.5.4" - } - }, - "workbox-recipes": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", - "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", - "requires": { - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "workbox-routing": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", - "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", - "requires": { - "workbox-core": "6.5.4" - } - }, - "workbox-strategies": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", - "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", - "requires": { - "workbox-core": "6.5.4" - } - }, - "workbox-streams": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", - "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", - "requires": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4" - } - }, - "workbox-sw": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz", - "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==" - }, - "workbox-webpack-plugin": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz", - "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==", - "requires": { - "fast-json-stable-stringify": "^2.1.0", - "pretty-bytes": "^5.4.1", - "upath": "^1.2.0", - "webpack-sources": "^1.4.3", - "workbox-build": "6.5.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } - } - }, - "workbox-window": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", - "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", - "requires": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "6.5.4" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", - "requires": { - "object-keys": "~0.4.0" - }, - "dependencies": { - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==" - } - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, - "yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==" - }, - "yup": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/yup/-/yup-1.4.0.tgz", - "integrity": "sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==", - "requires": { - "property-expr": "^2.0.5", - "tiny-case": "^1.0.3", - "toposort": "^2.0.2", - "type-fest": "^2.19.0" - }, - "dependencies": { - "type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" - } - } - } - } -} diff --git a/frontend/package.json b/frontend/package.json deleted file mode 100644 index 15834a1..0000000 --- a/frontend/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "pingvin-share-frontend", - "version": "0.29.0", - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint", - "format": "prettier --end-of-line=auto --write \"src/**/*.ts*\"" - }, - "dependencies": { - "@emotion/react": "^11.11.4", - "@emotion/server": "^11.11.0", - "@mantine/core": "^6.0.21", - "@mantine/dropzone": "^6.0.21", - "@mantine/form": "^6.0.21", - "@mantine/hooks": "^6.0.21", - "@mantine/modals": "^6.0.21", - "@mantine/next": "^6.0.21", - "@mantine/notifications": "^6.0.21", - "axios": "^1.7.2", - "cookies-next": "^2.1.2", - "file-saver": "^2.0.5", - "jose": "^4.15.5", - "jwt-decode": "^3.1.2", - "markdown-to-jsx": "^7.4.7", - "mime-types": "^2.1.35", - "moment": "^2.30.1", - "next": "^14.2.3", - "next-http-proxy-middleware": "^1.2.6", - "next-pwa": "^5.6.0", - "p-limit": "^4.0.0", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-icons": "^4.12.0", - "react-intl": "^6.6.8", - "sharp": "^0.33.4", - "yup": "^1.4.0" - }, - "devDependencies": { - "@types/mime-types": "^2.1.4", - "@types/node": "20.12.12", - "@types/react": "18.3.2", - "@types/react-dom": "18.3.0", - "@typescript-eslint/parser": "^7.10.0", - "axios": "^1.7.2", - "eslint": "8.57.0", - "eslint-config-next": "^13.5.6", - "eslint-config-prettier": "^8.10.0", - "prettier": "^3.2.5", - "tar": "^6.2.1", - "typescript": "^5.4.5" - } -} diff --git a/frontend/public/img/favicon.ico b/frontend/public/img/favicon.ico deleted file mode 100644 index bc8097e7efd5df8a082459ff7b3bbadc3ad8adbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115069 zcmeF41ymhNwy+QG5+rzlKyW8maF^f`ToQu226sXT?(XjH4#6!zfB?aQ2j}4WH#2kJ znm7N*ojbYr&df`%wP`uk)z$mkwRd%ORRaP+fM7xQ3j~M+gvJ8`83Nm0UVq%Df`<S( z0LKIb{<JRy0;PyRfS8#6xS#(71nPbZoJsPheRL4Wq8I{%4y^C<Glm9%uv;KNf%3BA zD2VuoK-MUd5+aKCzupV{{iU^R^MPw}Pf3ahDm%^Y&cAWe?sZ?f*&pJn%RG}RKa-8f z%opqb7HiONJK0F-*xX+l#SyyLd}ujKF|$*;c-EiGdDvrRPN{RIrchNPgsl`U8kkA` z{uLCGgb&HHF`GFq)+$dzFAReSXaNvTd&($yi4+0yY=rA9c`@Na22-tSybvX=pdh8L z<S|yLD(%`NRE+>~KHkN92s}MLc^E9nSA<p>-Vo_1#xPnWFv(D;5PTm=vnSR$BTjRB z#N{A_#ZNtT4X(bZ>2stabta0PAX&a=RC6&Bm7EzD-BR|Xm*+ZCfruu^Lh=uPNdhS% zerqpw8w|o=vby4blPt>Q^|*d(0($yAERUY?>fM9@tjH{G43-dumq$91F@$VmhEts4 z))dFtt-huiIH=z|O?6v{9rRjVa)#w>_Ut-N(ZW9PXyOU9+_r5FOSe#;)O5(C>23_v z6EfXyGTmkKxEpP!cBYST_K+n)&)mhfEpx_GLNWL7FFe}ND>*Rezb#yRh--wHSacnK z-E`2<2kT{m5fle?ka~6_{P`^EL6!>gyC(rnQb&kpI4_5UN^bnyP4)2Pr4Ei$Y2B9S ztZ_NX{CKwNBYHkqZ#<X|p~yzg5y<XbzRtK^h%y~5y)zvzxHXS+9wD%*`Pj&UDwyO( zRE}NG9;<3o^CETd3tG=!U&SaKlh}%@WaqMvUAv$j|G~2Z@{fY(OvTjf(~OP9w#o18 zu38qg3_cQ6pVon<q1Kuw8N$$&*X%CraEEDMi?u4YOX~5zQzfE29>Bai-GcIB?pep7 z)MU_gQu=y&)v69f2U#(MTO|muj->2c0Q(KW(#3Uw(IT8A;xlR{(U8ItRXmwS5vCmf zB|*vz!;;oZ#t*diVAs1T?9P5W;R+WYx*J<PdO=MOBrAiBl0ar??J%-oXghQf%y)(* zEewpTob}+qMR28d-^>84mrdhdY#WHAt$cx5jC(*1$5(x`ehdwY11bo<@_6c#1Oz=v zt5Nk`vf@@(hP=+=$0c=`O<g{4KrP2hLURo3YiM*xOGv(@`iNa<b=Rxtv_}eh2=V+6 z#xLYbhqxhjpdUf#kmCmEg+!D<1dmPa-f<}^S2~5DkD&DA6Ck7>#|S*=$me!t$V-EW z6lh~^d=76T4{sC}J`yCybKcK8!|=sik8$?-=jz=z!l4B8RApK%k_E?7=w|-tW+BY9 z-jF_Hj#ESF-j?Vx@Tf0`AbLZZv#*aUMrx;BPFt?oQg$InMA$*iK{ZL9WXjz8vyXGe zCtKsR2t#5#)XW^ZBq%&7LffktR-w8S-?nDeoFVDkXA!(lGvljRAzUJMyP0E`W9nQ7 zEokFe*Acv5q&3(yEV;Qh$LYhz!J!(Ty?T6rM=gBil?JicjmpyK1>B@s!)?^z_<L;d z`{!}j+>ET(f<AZ-7tjd&uBnEM!q#1R9m#g{=V&n_JTBihM|I734ziSMk>V`4JYO=Z zJ9~CiP7==+SJ#Qs?$b~Un}sMKIhl#2uyNqF;|Q_iWuZZp`H}gzaaQlA>B8D8t;pF` zs)t8G=-ozgt5qFV*=+flzJ=AadMAQd##TOKT;oHMWi@Qk1#hD$^(O8}NsiO9ni*@r z%zY=|49&1fZ-Rc~vULCAv#{k$1z|0zH{Rh#sK}nC!40tb-w+C~roQ07(u9m@`h{=j z*hj&0m7AZ4!(s~W7M44;;_X<CIO64rGEhLMKC?WA$YD97iBXT)?Nn2*lPVZeMM<_! z?we>=^)|F6SBS@y@k+cj>vRB@mE~L1?`3T%-`(_V`VX~SoK9gsFd-Fbd$G_jQM~Et znvjuF)^=Q@pJGv#Q>9%=&HK$9M~@~(wFG<4@|Lj%IPqBt%d~%|a~<_s3534*p89?d z2#<QcMdPZe=F}5!w8&{|jMy!mcMc|r#*PI}UZYj$!`HQCGt1kkCmL5AUJW>;e6NEw zLU*UC7-T`E%#9Gn;p5b-8dpW^Zk0u~%g@T{uJWbwT&lEtB-vE$K&0s(Y=m@2vI8uq zXRZ1iy^GcJ7I2k{lrKln5AUFP#L7QzB`3P@Y^3^~x$R^;TYUbdSot!{8wOg?a)c<4 zt%RlBl62K~Sz?(i?B?K>YeJNXG7;nqQ}dXR`rQ|s#k$%nk0VSCS2R#iMbW-mR2Kwd z2i-VLmHp(UoFmpl#?8H5u0nUlh}}x<L+@eJie|)_^3B-hlcYB5AVJTM#tz(KW!<M+ zno+c3OgBwaxY)zA#g7UT>gZ=?o4E_FKNS;+a+*O2P$iG1oZSU!%B$%T2E{RsG8W%K z<&3|<&)TlkW;Ywb5b$Pp30m>XVJ@tzH<#SMEb^pv*!k#N#R5OHPM!|Jml}xkY&Sk} zO&HRXsYQCdhPwFNLlNG{%w}uc6RK6Le50e7b$hlqlmOeSc?D{*QRyN<jv&j5M9tKd z9gfw^aR8l8ZFZA0ViDXdvQou=GyJl|Xq2Q=9UGKw-!1dzM#hFptDNZAD1<qw<I_;> zO8Gh#46^rm0s2>6!M4j);kE^gVCuvR!{HFSEB8gm7%5e$t<pEi2W4ivZDAyXR_Zf` zAUXKMbY>pI>e-r=vC*2>P4fE8Nrl7Ay$Fl&Zc=7<rRF$2l?!5^m-<6c0x{vT$mcI= zk=UkuMvd#{ukMgYbm2G5+IIyUY6oAd$BkJAUs4|sJMtV|NY^6SQL{b+eX$*#))#t* zPu-<UQGX#`H&t1jK!=ix`9WB(b=LsnD(&h5$7r?i1FIup`|$ovQ~ZjbD&n$-2>hXf z58LI=u+=au!#kmLe7_CO2=7Z6j+#`y+t;;&C$xsIL7zP~?(DTW8r38&bVyh4M6JQ2 zxo-Xj2<hk|MCrmA68aWh4qafJMZ-k7oj%8zk)#3+m7MU5MGPS~WNGJGBz<*E@(wx( zKA2ae2m9WnJ~GmVet0oZ^~<MajRMX*W!Ii~U6TUXjs`krr%LVN=tpb-KkAfkW^T({ zW#m=bRPll`UfWhTR?8CE);gSu=X32TpU2#%zK|k3d`urR9@3EUSx;qt{WLae)WE%O zDHt9!w*WTEaB8*<v=^$Ar1p$TFB%<LuUf}|5b+PMA!)YeEUU|O5$>It7%eh?NV6^X zxn%B6qCP{dB6_bxXkd|DY}%+vI+jf(c&tXK4-M(T2%0}w7No9i#k36pq6+M#y(1iQ z4H*Lh74Bf7Y0svHUp-}8c_~IcN0LFm28Q(@isurjqVm0pr$un%8197E?na%hI4tQU zA>JkJQg0ald0^BGmB<v!PR<%_;qyUNx6iolP0T}G3)e3!5nf6+Ox?nvtnW4P9k*Zu z>0U&7y>Z`keF9&hLgF!pTk|$y46CAei`<7%i9UOXLjwgHYnXe+!*R6Q5zTPBrwK-% zFQ>-SA$DQ0(hw2u!^6?%*<R2GDJCA^t(uqHIQ#^mSZ)J0WE}WeyHi>(Mp(s~LNN=5 z81uE0b>&&*wd>Yii*GNO%y{a}LbhMhx8W6(&e>WxuO-SgSlW}xBN~c@h*THTJrG)g z98=R#Q8U{YkesPp1_E0y54`kqkXqH2-LhJ9^Ru?{y_E>#Ln5JfH2T#RXPQ%*<mk3v zBqaMn97ObUHojiOv}o^INpCfKQ@0_gTAX8zshQYtDwf}$=-!%E*cpGI+*W2V%tw)} zl1oZReO|vJc8M5-;|MvgbP+mnh=r=6T((H#cOAL^L{+ZqN`0z${i=X|9Ko}-*w*3E z0h-c<j?yF0Lx!fSM>)-5rZJ7Cg^Pn2xGcs|A8?5+-a_~?KkCV5Hr$bsBGvMPCli78 z7J0{$4NqqM;BgOf;@C4vgbx~wtoDmXHE8y1trxzYDTQYV<Dhc4U8p2CMu(>85km{< z4&_!=%LiUz>{}58+(g$Y(g#*7xLM2;C|-gugXNfL9g4|?INwFgfAW79d_9MUfcOBo zlqfW5W=C8~1FuQ-Arks4XPKL+Gn1GZq-rAWV?EQ#MI$N5_Hh+rdoL%2exIgbg=ySu zq7_enWW-?4TSIn=K$b4!sP=gBS>!ASNME@F`&2*F*dRI!Mn7M2G}2cR2?1nB;gujk z&U~&V5)s^{=&lcVC4S+uqC9QiF2~=iOjGlp>}0O(?;D%C*((~M$*Q1`pcWSv&zwUn zKBxaQP^IKr7Ct5!z120{LgkK{16O~(j;S=)WEw2Q3^LTqexiq7FOd*N_TKt6b*Yj! z)&-eCGEvg&p{HU+@nun9+QMm1d*h{@g4Dep2p?>Jis5Ws>Y&&*T?S2X#9AokMP(e` zC3O5p<>t{Z6wDMMEKui-n2T28z%A9m-6c3F1%f>hp%ovl3@8$+za<NbV1L7;Fo4qC zy2Y8X&wtv5wwpYJlX`3enx4PJq4fr$y9+4mc{#@&Csj0Fr_!*~C335&aDq;-WQg*v zQP5akYZyC1^p^P6qiRWLNfAQ7@?l?_@KAz&xhJlyVnwB`sVgZ_C!JCFfUUF?Rad)R zpeQ!(E74TJxPrsH#gedQku&VkQcZiOiKym-*oASUUK;Z4_BxuwqUlF=;1tw7p>g*S z$s$5ye<;)^lob=&BL(Ll-uqtap~0nVQt7z^<=PGhT_d)@D$W!mkgdwI<r8&2-70~D z=uZ@fFPd~tmXi2Bz}PrjevtPK8+Si%gcJV&sFpMjm2^;#+=f#%)PaVIpUCmc=27PO z6AqN)lm!$*KiaZ~vQjAN`L82DN3mr$pN*iuqORq|8C<vxTf^$JP)&$GuENnx5!}*2 zPT*RMp+Lt4ZX{BH-k2BNp7H%h35#}E?;vI|Z2T;#L7M4foH%;-wM}ng?L#f^enimA zrO=~q4!Q#6oyG>+4mdBR5#>^zl!Qhd%C(jN%}|_H0TN~k|8ZWbi7;lo>~~~-B`8|K z=qx++5#7D0H`^V?#nqna`}SX@boSpv3EcP)WL@|>)PNr@T$@aXn6ruDyfQRPawx<_ zM$CEEpU+A)AIJi=0rzc{-M53dA3NJeBm+K#9MR}Q<|ONTbk3gmW+x9(J3$5EqKzjm zZ(%hkc-WWTj~)!1q)`ph=FiKkeLCPOX))y<+!yL-Pr;Hp`&wY=HqXZ*qWUt;)(R(? zvIOpBc7Oo9NfJz(6mHfR>+Fy9mc=>c`58CIfkc>(2&}s~%v5&QrSw15Y<+4kG*3%N z=!<^}KnKfZNb@_|f62jfW4X17<`M5Jc(OAj4&S7;%6*}8M9~{UNXwu(i(D;p>`<By zE6-{*SLoDyEj;FQ;i>FF6T2J5GV%J8y5cP<&m@oHe4Sin#e)qysMKdcw1Z-Aap#sU z97{0+Y4~^1PC3$WADQo_^_fX?f|MsMM>Opw%XEnYAGV2`S(Px)vVRtX4s3nMQb?V@ zmsD(d%kn$~_IU`4yO$t54)qR=ZC0>?O?y$nqRZ*|azLo`DqCqbg8cT|SDHk4IvdUi z+*8CL-*KR>A?em+9sBuIIxI*WDW9P~O>qlH6pv+cg%g)~q;KDfK5`__xj%AL=+NYy zx)*x0@(rKxOsT2aH09lfDpw9RZ7D5-`Y|c#e2B(q?#n_Y(JTiHxtgT{!)QF95xS1f z%(B9avZ=S8u}cFjAVJCCuM{I;-+~(wV-Jz=`qfSlyiB&j8tBR33(r+{(k~i|Ne`L` zjZ&r%6mMU$6yjNw=9^75!dt-hpXW&!o`#y)L^Vj$GDh|ztCXr;wTFNow&q3K@O|o? zhpu1G<sX5nH5|V=Bgmqybcd{bt|vy(Ox~g@zP>&;`%#&N%57eJd`|p>b}-psrFM2P zrVso<pm(cM8KyMOBRgz8t+CANR|Zep(rZZ>+b%s8pDzf=T5UWL>!}0mXM$>yh;H`f zT<%1BvhKMEJXhtO00U+xE>VyOBK}~}RQ1VODo>o$X|Tz{NxdluDQ;dH9dUzE(Zhv1 zd?K)ogljUOZ1zxju5Z{%21kGVoF*Qd7JjAgt2qvJl94b~OsIHfw`MlxGsI-bo@hUO zJJj@g^MZV!2ZcOUx8@7@Er)Oa@&nITuf61u@FrPUQWq0-U@aog3w?t<lk3)%R;^#j zzuS%;Fh>?g97GDjkymS8s%&FPCD$`~Hu)wcdW3g|Z)69Np)&gnKlPbeFW5*09h#*u zMZ|D_F0!lv51M7G1Cb-TZtELCn=OjId1@FJ$b9}bfK8}zyG8nyel6NlZXW{OBrNKE zbSbn}{Xhm<SNrgw!z2Ymraa0A2&AfJC6-WyxWeSkI|(#&Is)VxgzD8h?sLHk9C#(R z_7!Mw7Lio*{&|UG6oJ}{mJ|xO$QW;47aTD)#D`;}Gxy|29vQ&Zj68KsAWe}((>dPg zRfIwp$Y6HKLbnyHMPuTIPM2>amaBnbo!S}Z&%%8=dkmMwbi!qOxDNMmHVl7vIy#zu zF1O~rT|&UM8qjcNzGNU>oi!)cV}~bnn-40RJ9MZUJ|C5U)Mo*VUM_{GA5OxSg_uMH z&svv)RjtRsWt#zy=m=>$`TaMP3svp2HMr=sMnT##^0{927U&L)c|4X|1-JQ7W@_7` z%tUPH4xwz5YCMY7PZ3dRG0dbn<7+kGTHd+x^Vq$q2}W`rt8;D7V_P;ac?w=Nx*S&m zpU5voFJK_rmFUTyznEFhV@>P8<^L=qTJy3m+}Df=KG=o`uklF~zA=cQk>E`9>S)C| zh7NetCdV2ndO=eKp?_5At~_COY!ZpD-c8A@crw~SIZ(`U)Q~`)YAM`DHFBZiZ@U9Q zQLj*NESvtoY5MltbCmT5Y~b35oU*SKfKsIH>L*x2db69j&Epk+HcPv$de3~@_t5l- z1fJ-7r;#<wU}ggE%deF=&Kg&~1+PcTMB1NEhI}m$8I>aa&|BqBG9d@eIyOv#cSk-z zUao#OBbIp#!fV5ma|jR0f@a+keB~T7U9xzjsoBuip8g!ht9;6XzMOszj%D7@TA>j~ zw<hD{W1pgOgTvtvb_c`2&3P^*CBL}$7rkH|xaMs|seOD<W`*KL;dZMQaVQqU;f?)> z!EMN)ybCDjYV37iO_1Rpd?RcP>M6z3hFB<2^{Hvd7!teoRnC!hwtycQ49@jkw<##& z+NUwclB!ngVvF#3hEz44SQ11uUeD*kJ3978oi3(UK8|sJ0ylnD<6RuD0(xrA#_%@{ zi;RwT;>a$60_&e2>OztNCKEF5t~dUUuu*NjF#X}jfU>5(e(iX_e3rMv(7rwloaaF> zUQ|8Bg5knscRt|EVf5B-A_;;|`MBOx3~^<-KA;dYg}A-g-$3+MgIvE62!8Vgj1vqE zR8PMZvE*&5t8X=mjdgfgv8yBOx{-P+iwhAD<kUVxo_ktUb}8tnp>zTmu*>1xE0DqZ z!7m)ZR!-Hq9-5xp2{<uRf_0}&lOQ3WIZXkrBDV3OZELf7T+f1^d(+60*_hXF{D!Ln z2@E4{8LVGT^R9bPm0OmxXO3a#O)3n8Uxzu?J3@^ErQqazJv3K~oe57%Jd1@KK*ts= z@yS=lqPX=h3heo;n)VqnK%ZeV+2=%4Yn6OI#6OifOCLUv=w{j|4d-I$gQ1!r{sd_s znVd*Q@($|EY%S)nHuvr#qur8<q1N&)3kcDZlLK=8G9%SD5D$jV!7{{BXfiV;R-kE{ zd^*Og*4nq1KpUKvhKinn0t+$2;o}-r4ta!xZE0QH)G2DBriO`$nUS$Eye_q0d_zY+ zu5WbYbu(vCEPY00X7c+ZmH{cLzM$Sw;w*GX>L<G?Db;Tr$Hr%S5~?ih9n-k)SfebS zel%nCW0uSg)|U>o2jj0$@vA54s;SyeXnSHhUyh9$Ep;}46wPAxIV0#><APUZeMIzv z#gdRUD4BW)8agQUDT2hvq95W^Se{5dWP2*Fp(t&mKq~4Fv%0bNAV|!HFkmd5)~_AR zgV9e8<tu!Qf^1!y7grl9JCba%wiy^@pR%1$Nnp?%%*+`otnGje-k2Pd*A<shdBUa= z1LP5b6NVWkju6n<eADqbN6*?gJ|pAhB^=z=F2RzP6=QFbtj)I}yjkuhTv_sj<^YBA z>?C%Cr_{+`3fB<yr6mSFN|DYR_9CEB$28~}=)MddfMT}`-14;xYhQXPjbZ1JP}Z-m z#DE_nuc;zx;qV0f&9uQ|`{4^ZO=%u{f-@zal*7%<Z(l$3D}7RaVZFI&^Q>`%nTb>4 zSyYQkVAnD_jI;AlS((w=(UW4G)@Xwu90hH4?`<8A<;|n<aj@sKMwCR36L{$XDlvCY zMXpk^iN%Vt9g<XmBs_G7QHczOMI@PTv#oh-I=Wf#i!1L5uf}v(FJ>D(dLQ}HWK5ge z0;XUJn5gsPGCIbUuKl(o3r%(fZD#|nNeNC7VQqR8hng>LH#Ix+b!n7ouBk0orxUXa z4+saJvZII<UFLLm7i+de>bfqGeR`pafhu=BLz+X*|Hx=AR>pj;GH_(iuDS6}=JwLl zJ!*Lwx;4>HhZ++Z86V~R>os8lVZ+i(>Udi*h9j`*kT&t9N5<5`q*xKr48yWL#$&8v z`m&K`i-i3^%79?zPs%E```UHjeze7~ZP{JKn!Lo(gB>KsqZ>G41FDF2W8NI^c3fY@ z_lbp4d(8&i9NJAGleD>x?Z%H2Rs+y@2N-pn0?B%l!fn6y8p%sMpd_b-Zwj(8aF*TO zT;+U_qr8rm>b!&GS)@#{0=<Yl=s&nuiYa8tCbpQeD<n%vs^vD}Th=tzm=-8Yz$QSB z^=fWi=8NZ9idLHg5@3rfjd<=kn>&2H+g6Xh9*nIBVxODS3L$2W^)<aHAd7%k!N$gV zxM~L&rU*^o#)Z;D=+0#(l#?2_Yu_`QVU;A~{IZr!rMpiF4*`xN89n-hykjEI&A3Zf z&=DK_g!C8Hq@*Mr3}9lg*ZjIjLsN}~1_EKWmL{;_A9O~*aLO__uuaavLzgkC*^009 zXYub7w`BTtD8rN5n(y#?b;c{p(~FSywCU1-Ldj-aCSffbEeSN)OY<t-c9LG?j+@MK zKjZTF_B5n7iPNq&MEO|=^V{%kMJ1K~*_c7~Mki8-Nfn$g))mIlm$UemUmV#|Hx7@? zt~edPlK0!=a|H^v;|lBWj5IgmTh4hv&DEM`7FYWjuXdWO_rHE$YR5}x_N+fC0Bypd zG*0Ak;8dbDr!-I%Xk!^(UPOvM{WKX$Ew{vp>cBSXCqxP;W`4uPX=Ul<v7ae-2Q;a^ zBH8n%Fxcxa`4G5S{^*%sP`XXMCN`iz@(^^xju3fqxF%@1zRX`SlPMqPWVhxfy6)A- z)D*ptS5$twzNjKKHa63}*HU(PJc7e%y=pAa!u*VrI^UL9qw4*cmM1-jWm95f;y0vJ zuh3|^#6^MgSoG4BaA^uIn?~pH(ycK%PoSvN<_moRdksMn<VUm|X&YD74vt5&1aMBr z{Y1dM1x{I=nB(fpYux)N%f{0`Xkju2Tfa4sc3`01bY8=4bj4f~j@RA&{MN~g8&cox z=~e`UZi9p}sD>$WFLvAphu(GZM5vLNT`c70Tgs%^n@h>8W3FmE!ZUOQePkhcL?p!X zpt9>nW-l1>m^|IMCr^)04-Z!44$rIFmWI1R{Dd-)7&galk0y*X0Dtm0rN7*E>(%4s zgEFmie;AnPxR}VaxY3H-DC8#?8@ek}R5|&DR2x&f({}r=R(aX^o7%cyb2Dyk$Gxv( zly9u_4{=MkANz6MRb}<s=054$c}}g~@(NFJfO+zTpO*yrQ0E2sooH6Iqy5Jjchp`y ztJH21zaT7TEu*JgN!;2#Lht<0Gr=F013WLLCK;%(<fC>wWwrxx@o-;ByS#4NIy`hw zdwcne@3zBLz1DcSOgW%8bIYE!$#H+#X`<lytp_<qMoCK)j*g4J>LRDtew(YaSrN@l zr43Qtf)mljA!leb<{lqwk6v&_b+zBwf(z@kZk7K)We|tO0*{*?Z&_Q%SZ-7tPpmbk zh?OTlzsG7G5Sb$I#5r=&A$x6{Mp341du2E(T`m+^5^PGRsoLQ~dIpDU9{J}(u0u$W zW`Dk2Xe)&)tU0wa>(za*b3{;lnbpg7rb{jAY(iZW$GDa_Ob{sYctuJYPyZk$v!p60 zWBKJL1F>^SQVAoTk(1N0sWInP(;L~5K8Y@F%LQ2(6_^MF=$ty)uyzNcSbB~2w>3ox zs+z82c_kap$H%A4oKO9Z7~ScFB;0hz#wKOX8d47z+XVzY9;sT*wy&RTzZ2<PLAK2r zE*k2qTy7Y<B{m3VVAfDwJYHxEdG2M+*(OL*XlqmT+!wAVzy=lJ#4Sw}3IB7wBO4I# z!kQ8-;9*;lQBg9gAK`gg+X%r|PrYWr1H#-`9F-N%L;bbNC&lUw$&p_(5tJhqzio^L z_0BY!Kn3BiE2xEgj-{Qri?YNt?hF$XBH?C9=K1O$x_N%7OJCuni&q`}7Bi^E>G`O2 zKa3R~*XIV>m!Umb<GedQp1JWU)_c`ZzDiTC3gAAmZfeUal%y&=hNaj`G=-fAwKevi zmbR1n3{IW7S5L*YELpW$5&#i0(69H(4|#zS%a)p!dbu{qGQ0l#sDPC8!{?-NvIcMI z9^tLPkRv32t@X)C+Z8s|sKXutkgX1(+S5kqZ$h@kH~b1cxZ?@P99nj4W-sXSnv3m) zB-yE<m*wBRA6FC#4Qd#w_s~aHl=wPE1>W8Ux-~vC07R42D$~6?JFjgv>b0n;scBxV z9pxyizR+UnLm++Eoe6kwOw@p}xP}MfQF##(@!d%4QN&?#`GeyQ+UwJkHiIG4N<1v< zujm8?NZO679|>(|=t&$Pr|PkZB6>Mwv3Y%suv!h*n`0~y@Abb5Hh@lNh8+c~H<%-= z<>b_3=IgX+3%e5q;f&-JXRl@k^1>$)KI!%^R;!Ko2NQ(ryDeUTznSD0Jy{KPx36P< zE6*vSErUI+?LHYFW^mi=@{s+Ll8%PYn?U`;n8%Ed^nnP4g@cWO-=*diWTO?(>EmYE z>_{6Sfy;*1<!>j9takkZQ{Y|l+zp&hMn;cT>ofP;4e`h~gE)+t)%EbyWpp6m-pefp zDW;0GWS`=r96{`-M*|rf&3qNrs&d9WVVmUCm*yNPD#~cheJgM5#*wgH4>Z)OUiE)v zz8mpzJ~7v5dh1a10s|pnu_oc`6(7unbFo@wJoiFX3Q(G4S_F_HMwqC2jX5<b$5VYn zi4jPJ^eOF{W!6&WTnzp9Roa>Ag7BTo=qM)+SXisNWA*l4Uo(YjEf%oI&w0XPr`TEW z_I;ee8R3K1z{Tclv8T0aBE}=XGPikXJFwME#&jr6#WSlq0L>`C2d*T3P}WxO$UQL| z>jC_`iN$_9*gbk27dbS#zI5;_47kA%Oi^n!Cq;)(1m14D>Lq>W*9Ek_x*U=R+4+mX zj|ECJIqohYvs5e{?qtHJ62n(mJQav4HqRSx7;=D?^wokZ+_c4fClcfCa)_@uE-s;n zi3}aaOYmC<^ZDk8#&3l-i%cCpglqcvw%kBGR}h5g#@rNCV=7CXEtD#quMDJ2n-iVb zGIVkAec<ZsEEv}LmaRzbBU4x(_7EZA6TfyF?Qf<<5uw#=UKN8-u?@g@1-Gtg+h}&! zEqIy%DI4K9xy}%APQu*U!br3)?v!U=Y~~~;xi(X6wQ;5$D7EICu8f;2!WHG^!{rn@ zJ}?9UaoEA&3EG!CkLqzUIRjRf()MnLWJ#n{^w)N;BH)8?hA0!HnUf`?^S4=h>jff^ zl<guypi180_J4@O!d`wBMF4^($tK4@#Y|XTQ#%5G{WPsSF*nVhOPP%h$u*LGD62St z5CS~pj6Lwt-$f_~p+}N{RzD&NVCIQabOUWV3{-y#huV2%!~mhyjc%i34IfqDbr}-U z5hW81Q=O!bx)(br*n3P6WSox%J1uR<=1Ak*D#wzLSjF)cU9c)Ex6;R_nJ2o^*{dQF z`sR)ufinOF6~*q-yl9uK&ch!%_Q7lD60QN<E~i>2u)C<76)`Vw%M3#!TQ_+}{L+j< zTuqOKo;A~^B4O{uBChb`gxAKepAehvMMCp}*g-=IyD8fCj&D{%SV7sWkA%Crj?s_} zuh5IBpUxubH9>6TPtY5gSekSVI_W=xq4H}#a|b-X&E{r>Ik69$KRHvH-YYLQIJQSt zU)7W_O&D226B>Q&DTD#U9<?hCe@LWdYr<Tu-ig~~-Kp=yDf~DB@6DT)&Gh)FVIxk5 z#<=B|aN<~@W@AXcqzTq0mRm;qtrSv0K{ncOS-sOS`PCE;Q52MMpFB!CZ$y~-R6g&? z8ofb1%MHgh{u#JijNS+OWu0W!g#8Iq>?5^O)w-ge4|_Q_=5arwy0<8#dh9`Wi~6sm zny<LNACKfj!ig?_r4FM9)h?|M)sFo1nWLvMRaXaDN^^DI#kH913h|Jt7a5{8h10&X ziPPRitj*oR=7+9ff^BMsM|V2!rjE-Y^xo1iysvatA_{sK{R+9c^^UF!A<Wv?P|g-l zTk<pb>D^uzLH)^kH=Qw6!&j3Dpv(|@ut))f1B2l6p<WIJg@|6WtC4ZrT4L(8V66_C z&mTU>YhkS=(u3>I_F}MbdV!87-x&~-F9IoigU{ux(1Kmp<D;*nIv#7tl(MHwoUF9) z#unCu9oNplvx!od%rs+mF&*D}Oi=L-aH)syM6_O%=6|s9Nis3!6t>be?Fk-7n!WP* zRtQ--t2TNvJ!CXoSZIzjhz~^oGDHwZjHRc}%BS*SJ^<(8OOmq~TT~|MA?4!XcD@X- zP~|AUY4j(<^E6|>&)bGj(!zl>?dp>uBGTiXFAkBpO1$S%MmZ@Z(WDqQ`K3b}(|k1v zCuXL7qgAYfMwq|_3JA)y1$20ZXv=C2db}Oqz8#;yhmL0X@QNYmVXW=^)J3s|f+U?O zW8O@U$Ezx32Nei{>FK3L3=8D4R*#2^(<|!dZ-jj4hmrmLAG|2bf4y?4!Cq39lie3e zkrrYOitjcpLPBUj%?Qsfa*dywf>7K#+_&Xnpy(5))7BcHpNlK^uwZ-AeY&1j0;FD} z835NG&iY5ktsl-4w~UOfY~bR{rtLGwOKT8lsVeHKexT&9jer5a?;owRxSbh-_2O#3 zZ^)}2Y{9V~4vk=5ALUFWZ_7xVqBHf#E2Q=|PENWVd50)RuRTDV;k%s~0nT_#XdAyM z-+8)?6PZT5+^`|{afa8eyUYwk?UUT4Lg2%9Tln5hYkJ|@&Kt?;vq^`YkcUV7+8|9| zP(c4{x73-L57v+EM2l9XsPn0U>`qj`pB){bid0|BBzdAnw39G(Cy<#nijXk?=6rA% zW~sM)jdApK837Fo@pRtqbA4&-)t*j&?n#YEC#x$<BpV-wQxpljnw{T@1mY3d^#$?5 z0Ng@dq(8WqgJ2Y$=fbQIseX6;iQ5*xj-0lILM_^0A|yK;Q-Hq^YTZI}bY~}3*uHW0 zmNKIYGVP_GR{whgY%TXm9?N=1k6N^@L?MQ7NW-3D3^PSZ>ipt9{jNs*=qaA2sz9aT zmh6dJ(K-acSO?ay&6^s%Wwy8TOBjYuU#cnf!MGq`cux_ks49urC?Ky9jGLsLhLT1W zAo1Ih`rr%8s6cR-YqqNpZ0FZa-g1q?ghFUmYNMNdgNL|qe!1s)XUdZLYI;v8+4x(7 zUYP*(6Kn(L>sd<nDjQ#!(>25-s6J+5r$w5n;^MFVakAh8IkcC-q>PVVbv0^O&bP)7 zCw<F(jg`U1+R*-TX+S(!txAaeD@$7jZq8F3vBP7=P`g2y=btMJQlA73m=k-3+IX`H zu*|_!<jM(p_;m*jSkLPv?C(y~zaH~ZY_jx3we3LmD!&rjh`(-T0#H@D7#P$By)p=Z zi2icew}B?rON2E};Z8>zfD8dAPT=PIna9guE%NC{8iYc~6an4Z=dabLswE+ZfmW1b zFjw3zhI%ZUMWn!lF~}IEu}b^#U}dfhBq!f2G^ZpwG~M6;if?-o8H7MJo;hZFrL8x* zBEl9j8d^==bN#0UujOz)()&gAJ1)}=CcY9vMj&<3aa%{j#L%0Lx;q1XB+H&l+pPpH z&>g%5IRa_;6d_+Q8EPW>569LLy~W^Tp?ygnd`2bgbL<DQFg1J%N-l%I_1=V@h~Lcw zPIU0IXa1OoyZ5Yr4$5l-B~8g=-4ESS*2`d6MTk>aV1x0ETh1UZ(Nl=%f%uKIYumez zdfRxtA=0~hk+B8_5hfIBupiqsxj-O#Xy0~O<N|Y?iOOQ?L&Oezk~Vx$HZlq%Ba|bc zp<zkGH1x`th?sUpcu*(-5u^@e)QBT9{a~W9m=wpZYhYIYa;fD49>|UHB`|W)FAmQ| z7(M~|<r!jmaf1*%eab<@2YI9IpwZjIbVb1@cRtu8Z}<+ITsAP<=C<p{WT}aoWYZ0X zvEL$><B+~}o)Z(;*MfWjMU5UtFjQb3H&a<G83mc@m@GjY2M+?JqBp;126}HQ4AfO+ z;o*7_a;{uL_hpf5&{)TzKy8i8?;t)M$oE!AWS2jO?`0L6smY`_dx$AS;cq{8+IqmB z=vBS{WCYF&$rO}uOp<V%?!48&zl+tmW&fpop8ZRuA@2mj4%ug@V;_r`jI}7zLhy%? z%<FMLI0r7+gX<3LQ*}J^(nkbQlg@L5C|Ci*K4T4Jl2^ps{B}6quM42OUeQ62#O#c< z%!@yZNqe@&`7#N)x>#L`L=Nf0;YtAUvp7k#MCr@U7dN7BeBAU$`H`=5GKWz_(G0Fg z0MNL;TqJ%x(EEIC8;Y78x!N3#v$(1Kr-Ev+Y|LUs)7hA_z0i<eZw^j8`Rrcbouwj+ zzmJYC?WinPCnKch43|B5v~bm_I_E4t=Nau<p(~60=5dO=*s}~v(hrY()lskvuhQuT z@d>;?(`Qexd|phJdg8ipVzg?Y)AdHU!ea?9cx&(!LOs^OSqPqx(mb+%PuC?OgWc!$ z?u|n~i0P^Ily1v%6_kdv9MrtyTY#IJ5GU}CJ^-!laJ~f?Cs(H(xGd{Xk><d7_NvM8 znjhb|@%HqtV$@ir^jcZC7VTqYaS*Fm9RxqTKX?wl7NRYGkPU)F;*q_?7T?QY7uGpA zBlW4Zcn>{Qo2^JvpALQ;2OtoCeDfZ7eV4GX*CSSPLk0}M9XefBk3HG*vw!Aik9Ok7 z@o1DW9~=NXqEmThNyi2Pp|;-czQ~#s>_wUL7K~*RmRwG?PwpGM0tNzK-L~90&6HjZ zu7ku*Qn;sxg5q{nJQ^R>Q_sPfs!x@%h!Mrgx@`z77A#a;U&ot)K#cr%x^vufXS-oN zQlUtspPW3VD~k)TQ8)I10heoo+;?9;sd*Y{L9`DdpNZ?|1PJoH4%U7K*b;{C%x?Xd zZ^ChV`yUdd=WSc}pmcM?!f7~i$>s~go5Z2j74J-hVp@)5!!1fsx{e;FaI>!mfa@Va z?Mbd}5iWN79HI3Y=MP9zn8on{2lW0xX!#lk?kXv4cMg1ZvvM(P1Lp<2t=$5o*DsvE zV^e8{&wj8{8voqGU^q96S34k}2b`q82ji5N+tcefs_8VLF^v*)?qMofE9Y&n_LzE} zwUl7a`Dk<W^a0%kTkB%lCc&GUwz0<sn=0wdbCeyGwh=3S6MC|zC&^BYC2MPYwXtzG zhpjz+W+0*xSGZ~gxZtrtfBRb85}GP^Av)SPi7iK}9JEK=$5E<{+^2HJlw}ChAP_M8 zwT6O`^;nTJxs7{{va8ZIg!$5o;Qbz~tn4uxg%%XZn7gWJ(MG6j4f~VZo0)H63-SHP z5AjQq&C`GZSKE)rGTouv^N9Ie4s_GDjpw<S-FeFLVVN>1@o8OAK6^9QYJRND?X?45 zmLv(B#WeT5hW4`ec<JtHTfa?Bnj9s>x$^C8Ih`4gh}5$TG95$Xyy%gFTGl2d)gx2Y zPtYJ^u9M~nmSkAR60N)b5~04wOwK*V5xYtT>UQtZHQ;9`{ejM_!PJ&{BCBJqt>-#6 zAds=8iw1-^FmU>y)8I{9?-9+qYr?Xmv&CQ~WGJRA{Axc`nLGGpdePb^uqqF+QKi-R zMpi{6OE5Laa=1sbvbbRYw`I|Wj34A^6X?&^t6vG#e(+Im&Rd?-(}+{CUhAU3rJWsy zZX1zHb~D}^M=@|umz{&xU3B-hE-9FN$(b^Y*HS~4*VDx~-Jx#(iB9DBFg)qb+sCnN zHeyn5<jrm>)9^eFKSYR!%B%;;nF0kib*s+H+g?h_3+25nUlF_Vx9;KP8LKP?2LpqQ zA8m3sWNiUsfcc$w4kdRDl8!+jYhcV}N-rw!xjX5HGnDnA<7CRgM7yUQsUC|oMOt8K zrIoDVs2f<N!~)_St6M?3vO)=oEz{kZ8)!N+Lcj2oP=c8h$uoZF<fQj!@#CP69zgHg z>|3)mw1z{)Ex-3Qr@IS2v23tHobE#JpmYq+E0lU4SuL|{U&(!nhV|;<@MPNL%!s2Y zoQe})Sp)lrZwHSljqm&+vLrkZBAlM}%xKt3$O|KKu^u=wR`OtdG<%jpw$X^nKRI7< z$J`r|>lg0mDLB{&-5cnb8_6qIlYH5&A7XW@CuL_m!KSe<|FXZ+6M7wQ2+k|h#6@>7 zk<Aai$0n;_@APJI^ffFo?5W&|tL$@!>vprd)qpOT`2ji4=ZI%dNMBFeHv_}e9{03^ z-Vq5sL%Y&B`kdjum~g~!Y+@ExSJxbEV&!atb^!m5!!O)-;$$I~4ID`7&GRz&QqrXR z{SBPXRbK0s)3ixaIk<;bmqS29;!IqnMs*E|ls06n2%^dBUCg!{=_;Q1TgO!1mTf_b z^7;)CnXBLycg8#IQI%<rtpNXSuxn;TWf@hBI?ud8d2xcsvkZ=oYdf>SJx`aFm@>*- za7z`NL0#7%@|_TMn3K+$u4&eLW{TvTO0^eL5_qPEEW-SN>q#ZUJ>h8CPYdz&IO%R1 z$ew^I=@&VxN*G#_4c<Z*`pgCO0`);FdZpY&|Nf=USDe6%(1|OZ+a{C!$D^~EL}fdd z`;tqmQ@ftWRxti23R`|!=qh?U0;Fc8O7M-|H|{Mmi!icnmtS=a45(X*%VxnxBm8&E zwP)7}f!zbjRLPzJ%)p2l7WFA*3?WoJeVy%X-ov>2T;ZzJV~gRu9`FMNEs-*q&8&z7 zM)B%@_7^GUl7OGdx*lpHkD6bE(iwGhHWYDiJ*)C84jzLG8RI`-5e|cdf>t7>H!J-p z^iFUsudPJ+QlaE#g>nBHT&%mo`WOUiJ~&o&30An`VLTKrxoOdBtPpHZBzVe{U*pnw z78T}{ka5$LcC%t*vBIljD1`~~(w4iqB{}Fj<-Rl0rb?#FvFCt-nPG@C(1w6Qh71AT zq)&UP>N;K0PRvewQnS*4f@d#2?B90XkG{2B*_7jyJugkrkR5E~iC`An9m<BgbDUOc zyK}334whxT=y8EG9-s9TlsaQXNTg+FHXf$fs6O?4U3~|Cpje9pwltJRT}nv>M)ktA z6Ech4ArGBFaQl8tq{m`HUf*ZF)U7!^+jaZ;CZI|?{|&1?6sVmw>}EYYdgOurF+bEO zD6b+=(9G~TltnvO!}adfM@IfLFr%YklROS<7LYhpoUiPDc(IY-HNpXU2SROeLLrXR z81BiH5N96n;))~B!f;V!=p4lKtssEkRa$DJNa)=tC`5YfabT<i%mU~Z>%+!<22k9O zF0O;iN=6bvOqp;W82!WB&~`}Q)yBqH0OR6&Lzq2tW6n4yIMeQ=hF5jGbPqqYxj%EC zhHINf<=HTJYf8xB#{F)%$GB<3D+UEtBmn&@3i9F@O%=Ey&9g$>%yY^-fTIWqkSk~& zS`fY&*0=nNz)0v(2+6D=dcDFbZFbtc^L8%M4};?fcS{8Up1YJ@sWKe=L#-6;&N_xv zH(y3Qu1HH*Jn<2GZ|UaNDr{x*qW2b`Qyz=o&tc(L@Q|YBXDhPwi0_8b^MjQ2KKI@h z+Xqzy={=4xkcoj<LfG=-qt3pPYky#9BjoY|&da_qF7MH;gDzs-qRnGh)&%c1h{LuV zOb@a-gR1pMq{(8`!u&_g%ViK(gp{9d&gJ;_oD+(R*O;jdwNaPmc}}y?@YD0koo-jA zzZ~ZgDK^fFU8OR+(4)VKg?mO@Bt`*#Cq|mGp+$MLT1s@c8z*4sRPHdPa<OP4JC6&5 zL`=Y<gK%1o+xf*ZMem3|%9elp8oVD?V@Qtj+Dkta^VU;1qq*&ND~$ho=RnWQh2hIJ zlej6!YI@OCXy56WW7dlpn9eZoeuAQVK`7L`cow-0DACL@Vw~$?DAx6XKhfP*nb&ga z9$8gwi6^ri1E^Uzfca8W@vV-{mp&Q5AwHz~U@7)Wd)9<Br8ft8AEX2GHX*B~kBbP@ z$h{zaU-46B8*lj0^rTgL<S2!fo3}&8XoE8lxm!NF1VJ*B6TL~>f0E|t=hT7HjmmfF zd$oQ{_X#)~^lVONrGnU_JkRnL#nr1PMALJlx=gVyYf?o3#<4pinbHpzwlP>CWZC*K z%(W?$XX?wbw3X)Ib32c+_gusvu@v5x=TI$1a{HHgu6(Cfa<q$crO|hIOS$H8!vhS! z7`~6K=lu~ki&uvUQKM`|O*|9SMv(2?$%oA!!dj%i<}Dj91h5X=;l4c)u&G5dl)+&& zK1lo`zls(j*^J<vvbv-UPDTa+^C&!OoG##^1Wd;gQRHYC?Ot%cDvCbRC^>o2zW1Ez z%?SdjE~XDoj3VRntsQ3MGv14jZKJQ7^k#smGN2`q6<^Rg@Q0EhwrnduwQaK+{V1B* zBPe==LSLFlFsvgPpEe@vY4}5-<Z+FCY@wY<S>v;Wm5_ilLRa$<husiypvR-m%#tVE z*pjE*6DUG}mw3?z<1Ly-f#&_BBp#nJzgjV-E8KRdw_fbMD7^8T+ZVS2a?=S)0jHz! zISp0)Kn5ny%17azC86$IMHvv3-a2~NY@LibEr>@SSwVGvo^3a0rOR;}!39ga*-l6! zTD&uLtwnk|@fl=oQ_?;f!p!KJaQxny(<RK?%wLaMkg42|gj58dlPuefJxZEy&+iLn z=t?aF>nqCCgdSM0AkIcBIoM70hP6hWbXu*4+Z-DE^nIhc1R-KpF`-)0*0<&pda%}n zTiB}`#8h-tPQ$q1LiDc!EX?*2v}_;GzgaTQttAzhgX)93%C5&j?(JZQBKEzD4*`3c z@i<{<2&9(KG~S9nd%|-(@gA@epbf9s%F0N}sbY=WPoa5f9`1Kwx%JmCJezkW%zR{% zIV%honw>cUgfh6jH7kaF%=<vVhyZ?GxATKA@0B9evQ#!C+Y#tmSSFhQFR}#b^&|ls zPC_6Sc<7<%O;aX6>w@06C6FqJQ!4nh<;0Upt`=h?EBiS?sutGTzp<%Fl<uM3%Apgl zJkk){3y>;=rq^Th-6bj9^aQ;Z3xfJXHl!k~A6KtD<iy3rGh1617S1tWL$#AnXy8CN z2)%RYi9Zo~H`XqX@(JqVvs=g7F(?HZsj(VQKNOyH;b{-y3D3SXIYz}cpDYFeC|6!b zCv|6gTXU&#Ps3-n9i^Ser$h9CPokjTl3m~As1PRdlq6>LmJ+ne^|ZIDmulzo0baXP zs?54vtyars?z|5S66ix9CS_rEbdq;TyUUV`kA@)CoWW3}9W=)^ZM)@?Kd<Yl{o<QN zcMnZX&DufsjT!Q#V-^991EeJb65G8m4V_=VesvCAp@Vu6>PAntsS|A2)E*`AKza8J ziqe}Ry`rh<N<vUj@G(XpIYR9xDW;&fnN$mN6p}&9=0mZIPfBvwVvi$iePE<$ypKd4 zE71An2Y0`!5#W-Cj1IYW&y`hVfmXld^I><x`MBY%V?+~UN=rqxNnt#Fh5_xnSE5<x z2xT~$$_u<<7@h&l4euM0?zzylUD}ma_xf-W&I9rXwBGnWuU{o>IA4UWh-61A`0)62 zY04l-eynA9ba5NwHu5&zJ@v5@OWV!jBf%!#g#Ono8S+%5ew&o_hok7od3)c!eKWl{ zifePb<X*fO(W@OTav;6$ZMAY+Aqd)QIa`<=7#Mh#9;%1ps{&o)2j3CWV6l3IY4Huu zM_?Q^nIb>aRRB(KT8r`Hva=3&y6yJFacOA(dSrj~OD2BR%pJtQ5jge|bD$TP=nIk* zl@%!!((|DLw!Q8T0JDJarwRXY0e1e2m#V5N#JjsYN<jDld2w`f<N~ad0jUS%6CkUA z+ye6VmJ{H|X+Q=5DY(784L&?PGy%5d0AV{jJ0sH3(SiCeR^z|@t&xzBfB+WIfFOgx zU{YYM21v~H^>s6_o&sbOkV`<m=W=fs%YZ$M+}zw$0NYN02m_TH6IdghpPxhE;o<$; z>+V0ffJjJ4AVB|wfG7ew4+5kYkPAS5&*k3M%78Li0&5Py4&Y&6VE&WU{BKqE<KtsU zK(9D}hys!Z$bJ1j1mqw2aUjWWy4?GlH9*<{F$3&@77)bM)zyD1ef}pE28g><fG+I; z=?CQZuIE4z{;6djNSz7TfX3wHB<g>X-ha=sa<frGO9?X5=4B-XTwh(S13LWPar~cx z_#F}-&wT#WX>On<FC)r^#l=eb-`xoR7mP=khw+J=I7fiAFzf7lKbPCf%m1`0|5vQ# z_V#X|uj@`-LFgE`w>o(VP8C)La=3p%P5)J=(osHwQjp-h=k5#0CLlM`BCL0TelB<a zP5jm5h3<fRyO#^V2KuB$*kqNYo+1BN!Tcv~rc_M^B3eQKPEU&4KvtY%2++&*pY(J0 zU(Ww0JJ<&9H#<~G>~WYl|Np7}1YTkSn0yr}>1+k@CId<CJDES$i=XuJe}X??^LGm3 zoOj{!BKt|QBJXpRr5<q-;{8{*4d`*OAoEq8lcXt#hXAsfsUUv$f1Q7rtngjByx3)$ zyjX9Rl7w7_q67jJ7REo}N&hpFhDi#*#mk7OWGYIGrOJ!l-OCUDoOk#90rr2;2e3W? zBqm!?g780s>OU@JiK+}JSe%bAOHtw-aBl}cvH!vUkN*G9`Tt2bSLq7kgTVH4psw71 zy!AhJc>oUw0mL;bfO{u!KUaUczdzXe{q~Rg|G(@1U+8BGumkI4c~O-AL<7iCl7vo{ z6V(FlVeT*P>j!_J?e|mr@2}MV|IrViw{t*$g^98vgwT+X|1o9&v|-?ZI&TP+f9G$p zzd!z?{{P+j|C1fu0=leCkrM+x1pe>8B*}?B0N92Ca{c$%|KR^O<Nr_G|8hN-A}1;s zCnNlC>j>hcg)sr29}cj+_($x2@c*az-vT=OoFF429VYSb*Ixvbi2#UGr9c_)%lVhK z`&ajW`2U~f|Nl~V>wphXdN0QNZ{r7o#Q1Q4XZw7B`}xmhf1mCL|6j!azJ7g;c`hXG zBg6&$d$$OHGT;DyKNV=B{KI(vm$vbP|1aYI2Y&$QdoJp^pycn#--(wEDOOr27vOsK zmu!E|{ty1YoIjx7Tj1GnC0tT~*Y+9fZ~p!WxF!PN^KH@;{yCrj=XUXf|G&ilkA6Tw zd>~#%nC7?i114;YkbwU&1K#2Mum0RWXZv%ufAIg;`QQ723<dFipdJF#pnm=3H47a? zwvvPZ;Coho4&%R<<_G`p!vFsL(G~FQm1xQae4zJNUR?OtS%7E!|9OY^_xS#!-+u7_ zKK$?X4ETUEpe^R5PEYx(jV<#PdiDVDGugkSt^e0-;RpZk$Nyfx_dXfudzS(1;Jfz? zDA7EDNstwB0IqTJ*I53NV?X$RU;g(DfY?0jA;3xTJ;Q+H6H*Y+-y{h5n5AFB`EQ-` zga7yEfA5<!6vbl#MS0P_mkj{?v9pvU%l{U~UwZrp|L@QLo&``(ccY&R>4`jk^e@K& zJD_g?c<0~-_<is%<@~qK`@#R$;eW4hVC>L1&_DS2U-bbm=qM=il%>9_-~Y)Te(?YG z_}}X|M_I~~iwF<lm)by(I3Iepl4RmfyuSDP2mfD}Ki~t_BBXx#JAzngVM!p5mG8~{ zr~H2K|8@BT{j)bf+%8a~qeS{=eE<Uv7E+#yRP|4+evS1H{=Y8&KQX%mILcCEWBlxQ zL_k_dpbaVfYqa_P+>U<m|4sPc0zSL~7&G$l=lXzmqCDupGh`va>SvGT`E#y6cl!tb z--Q2tzu*DTXRq{g`A13#N&_~t^>aD?(sV!g|2F*Z`2hWbRVHi<|FBPp1RWIth!>f^ zl<7Zn-Vgr29e<!-a2J@9!9#$G{5R*A-v0(X@38^zc((r;j=wbR5B|R)e+BXTc?4-j zPZ|E^HwPGSv0(w0Z-IF6|IO9<rHudHc|Z97cKq)-0CjuLPneq;0|EF48GmK*7v?4f z<{*#!J!aqYw;%j}TmJX#a+D>_0RI2qvmkH`0`Lz~K%c?Sn!E8m?BECg-=06<1KK6X zNl;MW{`b^kfIl2y8(H6j>(9;O2mjxmKTy9nfO;+f@c*B7;JqyX&xgc7+@Jor?7m03 zAN+rN{s7~f6nRlkpilUJV!*vE0LL_d-;TZq*Polm5B|SB|9dt--%dL)juZW-CSZ^l zFATsw?B{a(Ug>`D|K0eX0?ePlLjBPN0P}b-f$y^neJ`#*H=iH;e;@w$d;s1$0Dp*k z8wi!)qs~+m|I2x%zxw_U{=X~#9DqI4y$#&k!q2U<-!t70{=Xl8Al~-@<GCLK{2>AU zDc_Up&&}%x|KE>4(8s@?t{}z(Jolji+Z{ib+4oHMga7Z!{}SM?2?!0)AMp8ma{ak^ z{ow!m@&6MeA0Q5h0XDGvbD4e5bU*n2?))o(7@z_43I5aH?)V;d@Pq&F&VL5r=<z*R z{*pX?Z~o^;hj-hvpYLw3um8$FZum}z{`CJJ{_OkzfB4S%&;0)5ul)>uKfdob8SC@c z?Bn<3e|E5c*Bu*vS7fAfH{aRz|Ju6_@TiKly%D%5Tt%<m>yLT`^&%>IsVaz&009Cd zKnet;Nbk~%QcS>06A*z=14!s7AgF+fNEE4}AXO11^eP5I2@sh7eNT2aXV0G9oNYO~ z!amRJoHA$TYtz2@<{N=?dVIuiO*Vnef6CWdJ>KNSGqd=gar&fK^;U0N-I~|5f%y50 zRpQ3AObzpVa2xpi-;)=-)+@sd{+~abCRPvbD?W&cu<@U;EodGqb}e5bvV1KAfzSWr zdc4VtXL-th@ZrpX{bFVBE_QrZ<2g4zN^DC>_H8>5`24@Ara@j_=N12NVtjXE*G{pl zYg;iJXO6hSF{N>&*gPXiT)mL)gT^0O1U~;=(!&+4ynUA!{O7nXZSzL)QHPddc7vLR zaGeuZSF9g9LU4@e_3sY<ozmRj{Li{}P5iQUjhNpo#wiR=Wf-!uZsbsLKJ9n!MBonp zozmXl{NKG|saVu1-f+FwlZ91p^%5Cpc*L`ZzdQWTbN*kulp(gyn=R(V)^S?49<Ozu zp&eM-rHweTd#7gtaEJd+dEk%wPu_2xJx!!Eiga48E}t<6boG2$SI7XykhgB$bWaZM z@ZTw2ea-(%=gx|6#*g-@y>})9ID11ZZqrnxZQ39>pD_Hp!~eYDKj?h%)ConGdocAY zaWHkAUHA?6yH~FiLt8ZxUF*Ioy49`X5V}W(iiIQJ#&?e2EBUQoD~|2h4jqvj=TZkg z|1UX{d4E6mb^SL|Cnvo(T;Tj=+gY>n%wfiDUW*iackeKgjqx;r&ws7~I<2Grd}jv# zw`}@W#6?wc;D7yEFNrsMcMvyjTsO{JBPj!)|KItO$FA}=ga2v2|0?1eggNk^ZNht_ z6O3@wy)=Q(|0S+?<j;4``CmZ{8{A7|W?prV)&^3aIDS-gY8~sy|2mb#lnJ8@<ltTs z>K`|xt`&{zhuW1HAnX5Z_s95?$FA~r#{a0AFN!Yh8jFhtb?~I|jT<+_b&Si{e!E)B zKXUkxXc-@2#|!rT4Z;7(6GpmZ?oG`7u3x{Vgqt^w%>f9@XDdGx(a2vt)(8~-!}hZs zLO}KZ?2BXTRTk&Yo_5I(zPyI@+HX_86hj7d6`k8O5(E2m6zjiQEi$j_w;lWT>=cbO zby4z#ZH_b9Id=50m_B)|=+UW}=-Mt`%)s^WV~2Bvk21sW>eVP8i2Uan!%?vR%+r0J zvQ1$9?@*_*h(i67JdkljSZT3s^S4g<AqoG@*Pn~#jcN(X48LXEJg$~lw|158w~Ob` z5;1jOaVU@9zR|I%ICI)j*ZapGXT|WuzP2(Xj0tab7gw%amZ0dyS1w-?Z$T!bYF4l- zGeGM9cXMKD)8CI@{QF8iJB#6CQ1q-<)s8Nbw(JAOj2JAgUcI7AS3YFj8ar}`s8_w5 zT^^C)<(2V+b}XL(d%ylY+uEg-<uPU-{l)4P4sx?+*N>t}!)gxS)eilyIP}{Ar|_{Y zVS7Vd)aCG+{Ex$!b7F&Vp5J0h`wPBI!Tyh;;6Kls&vO{a|9;?qL(oD?AKt$f8!onN zOm#}%Ea>6h9X=3kt0Vst2X<G+1oC6b%9_uX>5l!?W%q-8oYk!N{Pg4ZB3_68wW_`# ze*5)jS%gEJk#SLs95%oy|C>f&%n7}sN&KhXM<?z9#Qv{kX7GOwWNv6wn23qc=Re!> zo?TjqbQkOJpMJd9p*?5&zGCSD)Z-jo{qLx!o!i9e%9)z~9H*tsN>auZlA)(g9v6My zXl2)iM}=2V#sTE9-j8*kFf`K9HLyI^|JUohB4(OU@5pP^`E%&|Yg+gJ^)`e5l>4#u zYbfoYng`nJp%|BO-lq3s|4JF?)wQMQ*eVu%_-kV2@<q0OnSA*5mwk$Er$O!PF@iRK z?S0dj8e;iJ^K5+&^EillKJuM6MVGdXF@KB`BZl=?p6S8FIl@<;e=6c49raAIEb_k- z^w1mwnMC{D;Qv$LzXkpvDw+WU%bbG#uO;dM=^<&Ojj5X%+`o%Bin*KKkNi1z?u<AD z-OlM#CzWx5O!v#rdqmI9&7JCewPneBjs+H^Ocxw8$RG6)M~@s5hYuaJ$(MX5WA;g` z_bnRLc8U+nV4wFU)*Dh9n!|ti_x&2@1QntWkp8b$_&@l4J8Xswu>I>%uL|Y>xz|nh z!Sm-#6TiZalXQ0W<Ct;(zFlJcy9o|@7s+3vG3S))zFdWQ!AXa4p}PF^KhKNJ8`p~g zz1ka+HIDtp)~{|>-%tM!{n_@D|3gAwE)03#`Q3Tm7I6%ah%tasez1RT*Rp{aHSA5X z?8CWY`?gJDFUHs$XK#gWf6=^TkvOo2XpOZTqj~0*j%`8D&Mg%E;M&hW5xaJ7SJsL4 z?fFT34P66u0sVTk5$rc|%Zu;X*0sjGcN)fiX3!jE^32ee*!J^B|4*0)bVGlTXTJX= z-W&t458znXRUcr4uECOq`i=qhLe1hm>;8WD{Q0NC{A~VPaDHfc@c)S9OJ2s5f$r!7 zf`xzHz)2Zz#I+`jdrg}6@!aqU!)v@^=KvD^9}B_%;}?0!cUczcFdBU!>EaD-gXLR} z`z7vq9fSAj@b%YN?f;SO0DZz@A9z>1_v@Jt&hX_pkajtL^**36`ngdij{CshT{tiP zQTqJU{xBaX1OKomo$<(@&)Eiy0bMvQ4wicCE}WF@E|BqAz}26$bd@*S_$1VIN9IEq z#@4P{81gY2yfCE=AYJ-nP8<z7xl7w%NdFq<E)z`D_v8GBjD)aCmB4>()mQFu{sa1e zTJewppP%*VN+#tywgFSA4~o!Vp9=;aJA;ujJrJ@jaWx}`o^SPg5uvtmzn&1_{FeuC z{>x@F;A5G}STL%(h(|x^jF!RpoMRg^+kK4fE~8$zW*yh#yL<-z--WY+dV&vmat4T= zoRLn0P*-C9BK<%s=(oAftA}e|Jww00vtxx99tHm;tDVL;GqfbyiahrRtfmFq0qTW= zeJnt|mWgwHMdqN}y$)ZW-C4JtGF|oJ^)k;D#5|x6_+g4)FewMrkM@KNII|B3^nRc@ z#(UIjNPNtSQI|L4Eaws`7Uz07p-$Li&=Z>G8%EM<M#GxW3j|*~&=~XBcLRX;pko&5 za&MgJsypX%CI~qHHv}@%3o>v;^1`fm2HJuCuoDUv-9T&f_v4`7HH%*Aaxs?Q9r^SV zkAnZsSnc$A-^vx9N{NZssLs!<Yw8CRuud50I^qr(=W~v47M;}PVvX;@jQTaZI%Tkd z7s#&`@-f9eSdELke!oEt(V=eTfEyDu!8mVFWSD98T#`QO82$dT`Ehj&pZlyQ4soSQ z{5`2&^~I0@)BHrKapLt<^as?XkmhEO0b^=cROFGi9A??_Y3ajz^!XPDg}xkK>EA^S zjrsL>&u8IJK5oHSupIh<pY+Nx^BLuUbHvvm2YJ12#5qYD^z*}`s)=OK+e|uW%Z9Ee z6S|)Fu%_=)*W--m+UIpjJW*g_qq<!&C%>vK%k2AP%nztr=^t5DGzULeAN|!PkmnrN zbI-~M@SXB!HvW3$qut-wy<*vCS$BQ)gWmW)@PDD1dO<y0)z7Fecn5sxj`?D9ANCD# zkg2xdIr|*ya?I4@s`1skMn8Q9bw9#ae3$veK35{7d&M%PAzM53$_=Dv?1w1}v@NF| znYwq{+BbttaLm9t1bM0rtlQMr(H^-C_}v?GPRdgf+L!6bFOd08`h)M6C)KT%(DkL# z_ej3^I>xvn7Ui4^Bz_x#WxBPWVErA1^`#Lyf%=;9c+WM+K<Bj{&amNL-SmZ$F4y<G zm51Jy$`za%S)&(Zz%;)xdbr=_&uGuPX-Z^`XT0UFk?%XdSo#69Gao_*Oj{$o&G~IN z?gSrBjSPP^s$IF~eKOuRA_G`YEQ)od6?gbx?%a=k@wkYp?Tqlu*J-e4;3<^PHKKsg z4c%t)copOEKB$YzJ}zJL*GPWJ^=p>FoN(K1Mt8gR*CgDj<C$cHNB&GRta_yo=$T4G z2G|amVmE3M{mqnt>!5eil*sDtFY5V07~ZW_B?N1<mB0s6&XK&$_)i_|bgan~@dGP8 z&T@Q2XbAd(mjT;uggfH_|EvjILA@Ui-9$muIgfeeuMek2)wm0OlFNes`w`4+AODJF zUj^TX&uUOBcLPp;G1y?fkb&Zm(~s`713s$*+>_PbAo)#CmjAB1EYqXHi(-5_4{&GR zX$w4-1NNiGK*vbf@f0+jv2FqYeRLt%9e3uM)EyacUk1SUmC&)2c9ZM@l{~8Cllh^e zhy*V5F?VNNXlz_`9`-hq!2ADu;O>GU0mV=cftedqyBPSNf^k8>*^mTM+k|?uAAE1L zyh&8hwfC+><C%y4VZr>MF!q);g$(=vnwz?}B#?McSU{6M5hpKhRPR6kt5Ml2n>|;2 zF#BD_$BJTqVV$QiCYTC*1IDh{OnJZ_i@lR0t2chXPT0L>^Cz#$M;n)aN#lCuFsEG& z*}q^W{Y@%63wD|Z(BAj_sBz?jRf;|Om+0r+l^^s84`GfFhxT9#_>kxR$4uZo*GMw3 zc0LjOFCAI($=j0eS~=-Z;e~>rNh7oe^g(6%o-;ql#VxdRX$WH>@6Wd`Tj~zqHA2v< zQaP?6{0lPB5Oi7v9{hn2?Bm2Mz-K?|`Y^QhrNDc)_F-yBblco=3=A1~1^Vt$kb!*& z!Deel`^e=8ZGp?fw+-Wbj40MQ3xI}?BE%tlh;RUbv<<X19=21b5a>H+5bAtctb^P) z4(p;mCdqA^UBP_$LZC~05_D~f_H+X1{3C+dIz{q)71}EL(65>j9Z@)6$Q_pZQ%D~w zbdLo(1hxzJ!k1x5^s7yAJsES#ufPZP737I8*PWCxJM#Pu`ENs?v=rC<vA$6Qdm|sj zb)iLZbwi5W{g+bN`ICiy$$P-7FBXDalmtJjBE(`1vN!lO5!dX8w<7FCIFI10@8JCN zAOdaKK1WD_Yz>2bTPs{gB9w)#<-@N${>WcOKbP&pKFwmur}Ac>N%j=Ud4Sh;33zL< zB*+A}vhPFXeR}qNL3y8+eQzrv`_`60mb|xSpp?#MRtVDMdus-%ntOR`u_y&vq2bd6 zKCoqPu@vLIEqiMLR%n@CfjEs<**~SgRC#Bygz)>soO`7})h!ED6>qVG+7++dtBO|u zQWdWNWOomM($x6_pj6F$qWT^H+T8;{^=nYb4m?mOm-|o^^_WvJJMeSAFJgxdD4d2& zRKJ30svBJ9)841rzYo#gCu-j3a&OVRxBvRi-EBt!tvuv%AEJ5hAdjgQyI)9}-L0d1 zYu*>s))(!)rv4St+!xc<SM9yFzH8ctgk0_&+m}=|f;#P!9Rg_2?C#OR+aZ8^JAl!C z+5wDvI{*`O?h|tWQrc@3fXaPZ&U>Z3R{>BA*{K0i?o|LJ@VyFv?0Z`QO7^N2+S*^) zFt+w*HVlg~H~b_(3Cf)<18a7+E<k~nNvs)!T9eBR5^VPhiq_KkP(jgJx{?S9tgpFY zFbp9PA;eM~|M-O||9SFPym)c;qWN*2&*M15Hy+ocaaP|ai1#9#N6`K<@ZccQtV28n z-*rM<Iz2tT;N{Dg^8{vJ6oNCW{)SKqu#ZF7gOGDr9d11M9mh8*2vNxQ-ebp(`2tLz z=MfQB=I=N&vpwMa5#bhsKYqv3)6b9U@OpI7O65!X90yM_#94-g5Zd7^(EZ=8|I!~g z+vUmgigEtj8TdjO8CCNouY5pxg0K9B>zWH<BEsR%c{^aa#j{YqUH^q0tp2#k#{X66 z3+Cvg2H_o{JJNT2E`jxNjQu$eWB&L-3f490SAu?N%)p<1Yv8Mf>rdYTp8xt7O^57Y zvu43uxf;s*4YA-EUjcx>obz7*TwP~2tm&7%(y-gR3pjT}u&rSR82+TgP0(OA^kqKv z69T^w1)%qS7x~-m0}Md?r7WzQ4*LTK0rud*m|9i;mRvu425^^o+u{JmpMFj@CDpC= zpa&@1KEYXH`Jih{((+x>B9QU7!uSpRTitI%$c+p5!mwaHq95{cx(*Qp`13sAj}hEf zU_<{Njkd(4u00s=r|d${I~x9T4C{8WHu)5AKQ86mSsWzzv%Sg$KG8<RpFRPR{xfGd ztDgrE{`8@BXky*4$8w_qWTiD|Wym%qnD8gxK!cgC{DwmA|3x~fdF<*s*zm{Nawht- zFg+QdA8p`1#1+2Ucfp1~;RlXiV~??etrBdMIj1?M#nIJ$FyfE8O?#u7Y8l|!DZriQ zV%WxZMy`Vqf8qsPKY6|EbGCUB#(9PCjQjg<3;fXzTtPekw3GqhT?N5zZexTN!ODN) zhI%lBXGJn#d`O!cw|LL=L5+WO?Hzq9moI=b(*Fi|pl!+Rg+Jysr~^-6Zu=x;!EM}w zo&O5_(Y4yliLTY$6W;$7@JGF$jWF(Z#UFV80NJNKx+(I1Gb>A6zkJy(HMv^<ZPovJ z1iKaI%ZNSp>EccMpLOk;_%7)^@k!q|#HDj*4Aa2J_>*?7?8aQu)>Hh+^L3+!irLY% zmHd}?YbVl=9W_J)Kj7~YM^|;j6a25H|0&iC>F-eHlJ?ET*<XLjl?K6#f5w^9Vnwgc z4!BDiFKihnj_>61sq<g3;(z||A@NbimQHb(G)QS2C4T=d)hPjj5&vtKE{RRkCMtEF z^?vQ}1o3WcZRLy+o-;BW{>fJi>}`9$e(Z4Z=aIv@H1Grd8Itzy#-7xFiB#gi9&!y= zv}_z9GBPg8S1w~e;Qy<;c+2!^{Oe==d;M2yT*9t?nKCQMhJUZFE!D4FULQq0imjKu z{_TVQpY?IA#K+y(4*yy&iAD309bi9y{+w9z=`yi>+eQJ~9^3omDdTMTcklR`?Kv-g z|LuVIbj1<@dlI|nyxFyLyX{OMAK-rt<KM~d;w{q?{}!q<%?I`C1RS&MU>-7{tAb}V z&Yt*j`)1``R@M#CvvYGB{!OB*iBl(O<^wajKhKMn@pY7UO=GHy%a>>tmGhfFXPSV$ ziSnNK^E?a*j|cHS;NRYZ@02n*Z{(S6@?4&ny03_Bn>W~ig}svK-?N?V{kARH@78~{ zT14XvRrwv`r1wWC@^Su;v*NXw8p=D$xw>5-jatS>*uLX=AKskJ1^5?Ye|jlT@#lB_ za6XY5kLHbPiJx|SZ==EKQzyid1+&CAu#KVoZ{75bXllhz{arL@w|M?cLD|^9_b0I+ zWxCk6=O?>-dUR@LR~FAcp$vKoKX~5*y1#p%`#a)k9%ImVY0u~)Z^w;#TdDKp*~t^f z#O95uVt8Ud2fnLm!0SHUT8Xuve<F?^IV8@UJ}LI@*(p+HP1dCu&xZ08Zhi;6pI7u> zu$k~QAIhJ!fzjgP&wJMW2{_ZlQ@DZqFN3PSq^t|WR)Bk8JkIMaoW<i$T=nv9k9Nl! zn5p+5@A(^Atx^%tBhAzNc!m(qs?&qhAJ3w3#u3lE@f2R*ngyGl7p49i>mMP=YqY2N z@w<^YcPFpTbnl1ro4kP)_-{z4R?%(^4Ea3`nefVA%>cmV4}PojWPi)E@jS&JecmnD zhsATvOZ~&y@OObO(>%?W-=Q55y+8xDO=_5Zb<MNdSl7IP5jg%ZB&=d#HSY3yczER! zc<-@3NYa4qp|5Gs1!tY{ylii92k*1M`^K)$jK-S4Adc(2DTm*3T+m!I#`8oDIL1rB z`MZ=YZ(+jsUmzd5dM|k|W7zxM2N~GzgR+#d>Dz#vbZ}Q5cxGK+)Foe?MTs@8KPT6# zZpi28q<YmVp)K^84>$6T@<4oehB|SJMIXlgf`MmylFu#ht~<_srB1|KS=aFIW^#j? zJtU8f#Q45Df+0H~O<B3h=?t{rJbRGmn=-(L-RpME6%3H)C9r=hU<7ZO2KJBnVgESO zRldRS4zl;-i15lD*#gs!8g1dH!GNa|7}KyfqL}2VCo$}${*Ju4XFgZC4zM&wAipno zg0uD;tdZXb+*St|ey;d&5U@V&%d;d<7w$$~n2vm%+Cv8jeKrD)N3}fk#XbCja1Tgl z1h3`^exlP2^zl<MezPCg`vP%I9)Q0*#s~C=<hIR}pKw2dJ}wTvl?~f?Yfy6g7PO|` ztS9g}?I)aE)o=OkGGLejyWOI0BjBSC;P>tkv<o9agR^-^2l^W4Ii+RcXVXWRc%BXX z8)C0Wt)hTw00M2v{8cYbp`3}poBjp^(is)|35>bIKm+>c@z}Nm-%1%jiR%RjvB3R) z_+9gyQF-_!eOZA|+)Gg$G>JzY84bF8jQbr3#EEvu5=Y9*IRwfM$6AvR+Tr{E!hdwZ z1+jJf2D##OAe74taA%-+B1pCR!(ovLR;L6=p!ganW_4PCgh-}18%Sgfmj;Y-{Lmyw zUk28=nAICYF{{&rB56u;OF<c@T9jWt87F4nOTQd4&VCxe|5muAKN<<Q^d}<Yd}-M@ z<g?O4`UjDIKcv488HZZERU}yHoM80_l*0!lL-0lVgir_%z9}ChAO>V$Qx2bzAXEtY zi71263c=<l;y<|Y@elqS?n2?kuqN07Aqjy-9yEHoh9G}jJUxYXTM_2qx(nh`_%?rm z0tI{wk+JNs2K5l&=!UQb;W~o5KQ4OH=f%(q7t)_BSL$(N1$&taz5(uszHRW*#dA)$ z3$U~FTQ+@j0c+1m$k%U3z|UL$xzV+oLmza6`oj5hraA-1?dKa(*UGi?Kc_aV`4;+< z!aTpi7eDTeM}Ci^o&OALvbU(?@+16WdiEN?59lMxW6!(SD4@ToilFTO;hJ(D!O#9L z12k)e;1LcupVET<wF&aMf}r%Lc?>_xyotU&abn$SwmmgQk-<J&+Mj1i*cqDuzk&nk zI285(hQ^iLAC2_kfR|%&h3+yo34R3!z|b9Y(_G0vscyBBkU8DCn~CrfhpW?~!Xw7G zI0tlmov?e5E>+T78=DM2_nfCe5AldICcqbbAHeK%j$}6cq$gx!F80bg)CI`=zkwh9 z*W1aw`aVG5zX4dQsd-T1!TT-1E7$!VfdIe41MF2DQ@cuji39Yo)HQIP<dpV&7bx%p z7S8dM1AYH-&)xK$LtoM^Vdwh*f}iyu<vHw)POMfjAFj6s9sH=P*!TYc>H_z<T@N<+ z2`}KTkI>o(>`W6#@?(X60^pw-tndTwEr5T6zu><GyHM_j%I&9`zsT`_u5F1GX4?20 z-rMhv{A69fE;de`AlAIyUtGPA?h*wr;3uB+;cW<Cqwrt9az(5kGu)QvC;hr%FWOnB zICu%at(@HOFam!j_DhiF+Ps!_X)V%^Q?26o3l#V-ojoH~_U_^UyToNtt9Wttz|Rf{ zcnQB@TaMi5Px_wtX@?S4eK1Y5gIyX!^8W^k6T7mXpF8Ndcfm{esWWy;Gxa+){Bvhd zaiF96LE52%Hk<6P*RE2(a=4~{OS$*Js(&y9j}^8pY8YKz6aILs{$$LE!FF(bzvVme zLGnb!Hk>aG{Jd8*w5I)X^$I2JmCKiuy(pir`dC1JX#0NIk`$X=qMPtvMf*S770l{) zNUPW~QUAleP4HQ&z(80!wu(_;SdcPJc{Y2-1RG2V1G~fiKTB-g{H;P~()yBh|Hq9R z*F~Q<S}AE`kguCIpgRClCpC<@UDMu>@H4zKq_?;Xn)0{do3+Yb4chc?Nc~bYipsHh zB_Ftl;UfBhS<~Ma%Rid0(4RQXocf+EKiW!@M!CTt-y`h|jNhI^Y`6~7W>CV<xNY<L zV&UBB@KO4uSo7I(F?4WGo7||=@w#vK)?(%IMGCIVKbmK^SBLL=!bVNPW+VpOO$LX) zTmbXN-A2+g4fplLS>;*_pEvikLmcOZ?Koh+h_%LlS?4c_M&W0={(i8B?g+Vb2L_~F z(Xqk{$~+#rw*P<!myCW-JH3{$N%V%^>Tju2rLCXQ@{x|VHudEEw@0P2A+S4`=f?Mn zePI(H>`kD(=4jY(x>Gi2y$$n5JKuxQyFH8NHeIce{AeTTjV&?hJ{tQIjFhEHL!GX! z&pbS*y@Ol%QI=>M@6H|x*456C_sQ<bjD%|q;MCPeqdwmc_zky3YFsJ5wBv0CnbO0B zFjL-W$Lmfzqb>t&&N-YP%cV)(U+i-wsC#}H-*{}J4B99*xRmL4U~kO8JuH;9WH))M zh8@?`yS?6~Y$;vX<wL9fyd}~b?$b2oNIv^C2JB<{zEa+h9TnCJsMDe@H&Ad`!1Y5( zV<Rzqd2{bm{{X;&ew*#uN+a+y4eAR+bKu}{eZaS#$`N&HLuWVe&hIvCE8&N%c6sEr z(+gPK#o;K*Y{2trjndjxI<6&SpTWIYlT82)8Ggirx{z6b{Sn%p`QwN7u{g@$-uQGM z;=y^;QsnnyUfAso3VoUF)1wG|5w;_!ZLW;U3ddkSBaA@(d<Jsr6IpSWXDB}(!V?Iu zBP1bwjc^D-J)Y%SEcJY}fu4oX8R2<^0^XioNjoAMAMucyVvH4YF~q4fD?&_!@Tb@* zC0H!k=111Jn8l*lITf+SXywwF9&svTj8bHr$a_#&#=H%rUm}4~!I#Q=z@Mg$RrpD~ zv(4vn=pyMP>6UGtrJ^f7Q0R;Vq&o*g#Sy{~Y<61r<Ho}ubP@MsI^PuWOvH3Lq*mV2 z=>*TNS%A<MX&&~~xiipdJT`sun2E^On8OzmIChx6uQF6DGgm>U_;&;Jd+9tL0@ zb8+Ob0ol2_@jr9wc+LYep*I?f_T4QTd(^+j5H_Oi6LFYFc~QRLJOX*`Ltd^2m{x*d z9sXIQSNuEpuzbRB9_?XeS9Hhw$I*}2)*XCYK4D<rq}u_)CZ0AD-y<-c68um;^F0I{ z|EZ+|_8yIp<;vJk<x`ioP;IM#@=72$*yZ@Ee3ZpLvKnc?edV}LMzGOcUi-0p(%>uj zG!DVs_8%xu-6z`M@Mrlbllp>ZQARU~uQv8``NVTD!Ux)N<$WHMzaC{d9lz&VKJ??a zH2#xh6K!pOW&3C2sl?41vpsOSH_KJ|EO+ztB(ZK}qPUTnDT}qm2FrH_m-5_M`B~Sm z3Hp4KxU3%3S6s`m_xt3p^67(g^Nb|1tZQ2_34IIoA0KvVrL2qI$h_(a{!ZsTHvEU` z_rLUs)hw>2vIb%+*m{v{T|cn)e>Pf4nyKPFs%yJ+ET8+#Sq|4?_?tOxy!dj>O69&w z+s2}4baip<TBi7Z>v!V4(FrzKh9~q@_VDMj?n2z>J1d{hsZZuQ$vW#=+ms2T#OhC% ziqBUq7Y*>7`r>&XOc9&DTd#~0xOTGh$F1=BR#}1FRo-~VF-99#X{ftn8HC~OH@gYa zbx^;~4mxhGHPJ^KeKygr7r&t{(pBDg_YU?8KMWWg`X2cm_q}t!Kl5`ZP_H=F^}59^ z^tolM{m)`qo?bl21Aj%ma$ob=^mbT9MQ?^NR~eM+a<1vl+Q=JqtK{bYg0_^lbprOo zxX;zE-6-fjU9E3$oo*QPqIxvcJX?jn53{12AACq~&-8vxI^Dd+gRg_ZlRl8m-UtJ6 zO<p5U-SnC~Ps3jJ-#I1cTtOG}9Ma}$FR01SNSQLtRg7`Na!Pc(0uC=Cf0y>69+uBF zlqkm%9iN~+at^T1!*V39>X>7Cmt%h|6i9zB;CLUgAsaj=uu{)FAM-Dd&%MO=&meq& za2Y|3ldEg$+m<1`>?^$$<bvZ=>TIc}`2m44!g@?NIF8wcz`mqCLQ$jp9!09M7mxez zLa9Q4{-H=3G%cynQY1okz+mz4$8S@!L%uZRiM$K43}q)7)f6b36LhL2iX+(c6b3Z% z@E2GL-7z=&&~WAk0{4RbjxZB_RC#2l`vYwXQm(qUZ^HDtzy3Yi-h`jNWTY#s&IEP$ zZhXHM&jr5M{gw~$z4SA=3F&Qfe_T&NP;40teox+VuEzG6eFW!C?tafaLJ_9%TMxfy z|M;uR@2%q_4gN}b_>OzMZT*{?ejHbAnK@N#m^4;!Z0Y2C=EJ(If<InKd*S#ov2^rM zv0&I+;(Xd6<ypTR`pfbe|0cg@+@fJML0_}<wMko(31f$e4;Ri>Y*Ai^4UVQSp^vYb z>hEdq(kwPyywRblZCui|UA$<~xVF&oHMkV{y@c;&eO1<I_5486j)`Mxby>JpHf$lD zt$t45W*isL&l!Ug|4$#IY(<RGzZJ&!hV4?3b_ZnMPHPC>6~c4U!iEd3wea%YA_Qn~ s^?!I*4uLXx0D)~h<%2w8`&LQYZl*&=nhL#XqQTZE5ydhszu~w44<A5ljsO4v diff --git a/frontend/public/img/icons/icon-128x128.png b/frontend/public/img/icons/icon-128x128.png deleted file mode 100644 index 52a20b33f887b6c5b30110d16bc0887ec2e1cbe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3543 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 diff --git a/frontend/public/img/icons/icon-144x144.png b/frontend/public/img/icons/icon-144x144.png deleted file mode 100644 index fe144802322b193c2115c5e31621f41c55009bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4227 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 I(z*NSKM^b4?*IS* diff --git a/frontend/public/img/icons/icon-152x152.png b/frontend/public/img/icons/icon-152x152.png deleted file mode 100644 index 49d1fc8ee0157c206cc45473804273b7b1ced08d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4674 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 diff --git a/frontend/public/img/icons/icon-192x192.png b/frontend/public/img/icons/icon-192x192.png deleted file mode 100644 index 2138fbc81538594961b68bd1a0968b9a2b2bf249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6729 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 RLJ$;yhRQ=^rIJm={{W~sgOvaP diff --git a/frontend/public/img/icons/icon-384x384.png b/frontend/public/img/icons/icon-384x384.png deleted file mode 100644 index 91affc1ade78df9cfddd207f7a303d3f2a2420e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13347 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 diff --git a/frontend/public/img/icons/icon-48x48.png b/frontend/public/img/icons/icon-48x48.png deleted file mode 100644 index 437795246251809689d46ba262b47276768347a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 944 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fg@iV|D#1%+;1TA(8nCBV1 z#M5t%TfltxfI03#i#&rCd-%_D^IzcL(BR;(-_3iDoBurLp!uPptK5R-y9Lez>H;YU zT;Lh9%qwJ>t3OD@9f$(wIfPCP4V?*8;~qHQ*LS9yTQ>v4f1pL~K?~di7nr*Rn0WgA zhk<|p{sEal66glEfVozlDdz6}R-TFG?g3_Q{??wURvvM#{&PQn`TF<oU!XDzH~%kR zznZ!E={R};HELM9t68{d+IxQa@--kP%_T6#H!iKPx}mJDIW#SA%g)`GuU_AC@W|Rt z+kg(U_nzbAH`mm8mbvR}=H)>rfo{?(3GxeOc<}GB;XktvUkj^QSahsRnWrxJ=N|p$ z)4#hf{_^lIUd6@D$oTiKu{HZ&-beplJXoa+3`PdVByV>YjlCPTZUS=HOFVsD*`Kk< zawzJ~$xNOMl&<o0aSZV|K6hGs&|w3fHeZD`n@(#?iA-C_!PD3jEl@r6?>~O$u=Nuk zi~idkbME7R*KOygor#F6l{@n3*UVUEJAt3gZodUIOxA4eZ*W_jWiPR0!}J3y3~$== ziTMWnS8-5G;*ts3bmsdBgW{EsXDqk6C~*17Yt8c-3bDqk7-A+Vx!ioR+{IG7q1agP zXS(rQW6^?nhG$wE@;M!xew4VJUGe)-&=#R&?~bxBd6x`Rqr&IJD|bnYO!R-S)?v@$ z?9(@FWCfLq>iYTT*e6-%rXAmMK#Qe<OZJiEVu6SE;}5aNa|TQl`^qb<>aeD7%LXn7 zj*oII@()i79>}|G%JeAx{Cl<s;s?yd7(YB0H*HwYR`trGI(ehS2A6GZ%m@B4hIBK; zap;IMhP@En%KUL=Tq*mtB__$Nm-cLV$CXnO9DkMfL($2rOixZvl~iC|n#P``<3FRp zH&oD+Vb!MHOWC)XPK{-Mv7XObE8%*@?Hj9ut84E+bSu8#ai-VV^|`!jMQ+HUy`Y58 zpjzS@QIe8al4_M)lnSI6j0}v7bPY^&jVwb9EUb);t&A+R4GgRd3}*kY{)3_+H$Npa YtrE9}SBnli05vdpy85}Sb4q9e0C<~z{Qv*} diff --git a/frontend/public/img/icons/icon-512x512.png b/frontend/public/img/icons/icon-512x512.png deleted file mode 100644 index 1c1ed086dfef48b8041d8c4dc2d4fb9ad938efbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29565 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 WUtsptdo(BjX{hP^Q+VFy?*9R@8kCIy diff --git a/frontend/public/img/icons/icon-72x72.png b/frontend/public/img/icons/icon-72x72.png deleted file mode 100644 index 9ba1786efb3944014b4f43c5c413b29722e697f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1551 zcmZ`(X;4#F6ux06ih@`v2*{35C^5khf|Uf4_g)N1ULFKNh00n$tObH-tz%HCXtiiX z3M7yaz#=MEjkqu4f=Cqw6s#c7iW|F%pd@+e!+-5e@7#ONoHO4tXU@#sjS68avI7|a zV8uf?7?F{gXJJglL|S+*kxaf}3)ldhESjZDFePf2Bm@%x@VyrRvH}36iI(gY0J#(Z z2G;_>ECs;sJH-X@G5|==(1<850gy=Q0Wd&fB`j7#sFI6TMo6j<Obv_G2&xPhS3$%@ zRpCN8j8^f)Di~G4;tB|@gvFIeWDPH}h9giT!s;+VC5%;b_?3hwBCdkP)r2?!n?VYd zFs9-XT%m#^D&wGXNTd+QHz4S5kXS{45v&FhDQSW-gTWw^8F-PkutdSa<TBaS)YLLA zs^nlwfuJlzSb<;!SS6Fm5TTMIs(@#>YG5#YGOGCGt7freFyVz&5o$pQ8U%}IG@5q^ z<j&-J@OVV?KS!(85}oPknMh1TNFi7?S0rZ%c7Dar;)qJ=kdP3eLjsPlgo%93MHO6B zPKP6cV3aE==Lk!~1bf+nLI|y3An5zaNgT%ssnN0Vk<qcqsi`o*?$7CAI-Smq#`a=x zv|8PK8jB_Pkq$ut;d~|!)ttW=1c@$Qz3$KE(FHM~QSnTkn97Op4Tczq$d?J}ahzCz zcQBV09^oDoPRzo9MQ%(kElf^qfx<42O+St$)T`_6{ak#b`|0aPT`xX-)J}cSaz&N- z!Z*#tCRR%^VI(jnJ=Ecy3vt}V7RT)}rP1+v{ew<tZ>qhUQQvbCp1%EHrH4ODVCzCm z(MC2h!sj`fm{J&IE4|)G693^NNvD7N&SHFmq{mHh+}s2=Ti{@EOLxyQ!g5U!VM9vf z!yHOOkN*Hsm`iyAuK5cSCkt19MS9Xf0F18lIP9pH8^=q{^ExQjw+{uTp50sSl=hfr z-Qu@p%s!fwD^oq7Vt$jpDUHLIyI^j1dD9uuFP_g0@s-u@o{m+t@|gu5D?E-0YaQ<n z)Rdcf+BPFQcJ&wToYPS|dr`h=eM8%|y*IIadv@FJJLF(%eDK(<B?Dd(#Yx8DraK*3 zS(&_p*H_I;%=rCq(+!1X%xYWLR*y{8ozC|*oj&`l4$aBGc{U-3ziu7>^tg0{)jI$2 z(1d;aiPJCFDvz**POsXbu#CtOA7e$R2*d$LT1snRzchsOXwEs|uW_5*ij%WxQigT< zVM^5;`?~Pr_G5*5w*!Ni$J)mJcn`AWXiMS8Q)H>BqT6w#Kvw*My5E+*;D^4}qt3Ox zXR^n0mtSdnZ3rkxa!gANIzQy!B9-e$=P$|ovu{h!MrDyR$l-G`<L<t5Eqd)WU{j0d zXiM9@3#2(ik@Vp`CY}$LjeEV_WD&AFsl)Zwo1BgP(R2OUf6xG<_h@L%l&Sd@zj>Ed zUOurkXRgVr!d{l@Y@jM{>yhFKXCsNbozYecvr~JQo84Br?4K2y#zv1o+14dHmTyb& zrM!8za+b9|n!fGqox=7-o<pJxbM@6dO?@p6!S#uTzZ$RBCx$Gpy`<|69rg*>MqcW} zez@>jK08)}SdlGFB%~8I?hg`+kIqix)lw5TG*7RP4ce!rd$Rse-9KR2Y-mUsVaG1g z^f+tOAKv7xXMfw5kzDJaCP~j9c#_|Pf3|vuQ(Eq3oAXU(nrO{vm+A3Y4Mkn@9rW32 zrZ)tdt|yOWtf8S^7b=z-lNNSsEEiifMoqA{H}Ww%P3*b*y=vnpzC$jVKh1se<%aa( z=9|VT4#jaL6<Mr{e`~gG924hHcHSCx8R-r%c4E}Ebuf$V65j60?aqWjG+r0`EFf=q z)0MWDoA-UR_0FO88M5q_X<Zk%&wR+9Qf`biIYFAjOv+9n5};D3RDVjKKQ%at!eG*9 qOe*6G3WZ6b$PHU`|01m4ker^n`Tq%n>KiPA0C-#>ry*?Z_J07UUZFMs diff --git a/frontend/public/img/icons/icon-96x96.png b/frontend/public/img/icons/icon-96x96.png deleted file mode 100644 index 9c9a78427870b320f9f771fc64391dd4e15c7c87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2338 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 diff --git a/frontend/public/img/logo.png b/frontend/public/img/logo.png deleted file mode 100644 index bb7ea122ebb1ac1dacc5355d706201c0eca1035d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87662 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 diff --git a/frontend/public/manifest.json b/frontend/public/manifest.json deleted file mode 100644 index a7b5fef..0000000 --- a/frontend/public/manifest.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "Pingvin Share", - "theme_color": "#46509e", - "background_color": "#ffffff", - "display": "standalone", - "orientation": "portrait", - "scope": "/", - "start_url": "/", - "icons": [ - { - "src": "img/icons/icon-72x72.png", - "sizes": "72x72", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "img/icons/icon-96x96.png", - "sizes": "96x96", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "img/icons/icon-96x96.png", - "sizes": "96x96", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "img/icons/icon-128x128.png", - "sizes": "128x128", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "img/icons/icon-144x144.png", - "sizes": "144x144", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "img/icons/icon-152x152.png", - "sizes": "152x152", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "img/icons/icon-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "img/icons/icon-384x384.png", - "sizes": "384x384", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "img/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "any maskable" - } - ], - "splash_pages": null -} diff --git a/frontend/src/components/Logo.tsx b/frontend/src/components/Logo.tsx deleted file mode 100644 index 44fe2e4..0000000 --- a/frontend/src/components/Logo.tsx +++ /dev/null @@ -1,4 +0,0 @@ -const Logo = ({ height, width }: { height: number; width: number }) => { - return <img src="/img/logo.png" alt="logo" height={height} width={width} />; -}; -export default Logo; diff --git a/frontend/src/components/Meta.tsx b/frontend/src/components/Meta.tsx deleted file mode 100644 index 4ef2c95..0000000 --- a/frontend/src/components/Meta.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import Head from "next/head"; -import useConfig from "../hooks/config.hook"; - -const Meta = ({ - title, - description, -}: { - title: string; - description?: string; -}) => { - const config = useConfig(); - - const metaTitle = `${title} - ${config.get("general.appName")}`; - - return ( - <Head> - <title>{metaTitle} - - - - - - ); -}; - -export default Meta; diff --git a/frontend/src/components/account/LanguagePicker.tsx b/frontend/src/components/account/LanguagePicker.tsx deleted file mode 100644 index d62e93d..0000000 --- a/frontend/src/components/account/LanguagePicker.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { Select } from "@mantine/core"; -import { getCookie, setCookie } from "cookies-next"; -import { useState } from "react"; -import useTranslate from "../../hooks/useTranslate.hook"; -import { LOCALES } from "../../i18n/locales"; - -const LanguagePicker = () => { - const t = useTranslate(); - const [selectedLanguage, setSelectedLanguage] = useState( - getCookie("language")?.toString(), - ); - - const languages = Object.values(LOCALES).map((locale) => ({ - value: locale.code, - label: locale.name, - })); - return ( -