commit d25187c9c844bc6270b081dfce266a020736fd0e Author: eleanor.mao Date: Mon Mar 31 22:34:22 2025 +0800 feat: first commit diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5760be5 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..5d0df01 --- /dev/null +++ b/.env.development @@ -0,0 +1,2 @@ +# 配置文档参考 https://taro-docs.jd.com/docs/next/env-mode-config +TARO_APP_ID="wxf0724a83f8e377d2" \ No newline at end of file diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..7bbca2b --- /dev/null +++ b/.env.production @@ -0,0 +1 @@ +TARO_APP_ID="wxf0724a83f8e377d2" \ No newline at end of file diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..0215b61 --- /dev/null +++ b/.env.test @@ -0,0 +1 @@ +# TARO_APP_ID="测试环境下的小程序appid" \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..793cc71 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,11 @@ +build/*.js +public +dist +node_modules +config +config-overrides.js +prettierrc +.DS_Store +.eslintrc.json +.env.development +.env.production diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..ff9f7de --- /dev/null +++ b/.eslintrc @@ -0,0 +1,26 @@ +{ + "extends": ["taro/react", "prettier", "plugin:@typescript-eslint/recommended"], + "plugins": ["prettier", "import", "@typescript-eslint"], + "parser": "@typescript-eslint/parser", + "rules": { + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off", + "import/order": [ + "error", + { + "groups": ["builtin", "external", ["internal", "parent", "sibling", "index"], "unknown"], + "pathGroups": [{ + "pattern": "@/**", + "group": "external", + "position": "after" + }], + "newlines-between": "always", + "alphabetize": { + "order": "asc", + "caseInsensitive": true + } + } + ], + "prettier/prettier": "error" + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..46b35c1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +dist/ +deploy_versions/ +.temp/ +.rn_temp/ +node_modules/ +.DS_Store +.swc +project.private.config.json +node_test.js \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..793cc71 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,11 @@ +build/*.js +public +dist +node_modules +config +config-overrides.js +prettierrc +.DS_Store +.eslintrc.json +.env.development +.env.production diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..0827ae4 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,15 @@ +{ + "printWidth": 120, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": true, + "proseWrap": "preserve", + "arrowParens": "avoid", + "bracketSpacing": true, + "endOfLine": "auto", + "htmlWhitespaceSensitivity": "strict", + "jsxBracketSameLine": false, + "jsxSingleQuote": false, + "trailingComma": "es5" +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..41ad021 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +播络 App + +### 开发指引 +1. yarn +2. yarn dev:weapp +3. 下载并打开[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html),然后**选择项目根目录**进行预览。 \ No newline at end of file diff --git a/__tests__/index.test.js b/__tests__/index.test.js new file mode 100644 index 0000000..f715e8a --- /dev/null +++ b/__tests__/index.test.js @@ -0,0 +1,12 @@ +import TestUtils from '@tarojs/test-utils-react' + +describe('Testing', () => { + + test('Test', async () => { + const testUtils = new TestUtils() + await testUtils.createApp() + await testUtils.PageLifecycle.onShow('pages/home/index') + expect(testUtils.html()).toMatchSnapshot() + }) + +}) diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..82f544c --- /dev/null +++ b/babel.config.js @@ -0,0 +1,34 @@ +// babel-preset-taro 更多选项和默认值: +// https://github.com/NervJS/taro/blob/next/packages/babel-preset-taro/README.md +module.exports = { + presets: [ + [ + 'taro', + { + framework: 'react', + ts: true, + }, + ], + ], + plugins: [ + [ + 'import', + { + libraryName: '@taroify/core', + libraryDirectory: '', + style: true, + }, + '@taroify/core', + ], + [ + 'import', + { + libraryName: '@taroify/icons', + libraryDirectory: '', + camel2DashComponentName: false, + style: () => '@taroify/icons/style', + }, + '@taroify/icons', + ], + ], +}; diff --git a/config/dev.ts b/config/dev.ts new file mode 100644 index 0000000..c37eb43 --- /dev/null +++ b/config/dev.ts @@ -0,0 +1,9 @@ +import type { UserConfigExport } from "@tarojs/cli"; +export default { + logger: { + quiet: false, + stats: true + }, + mini: {}, + h5: {} +} satisfies UserConfigExport diff --git a/config/index.ts b/config/index.ts new file mode 100644 index 0000000..3a04a66 --- /dev/null +++ b/config/index.ts @@ -0,0 +1,124 @@ +import { ConfigEnv, defineConfig, type UserConfigExport } from '@tarojs/cli'; +import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin'; +import { PluginItem } from '@tarojs/taro/types/compile/config'; +import devConfig from './dev'; +import prodConfig from './prod'; + +const MockPlugin: PluginItem = [ + '@tarojs/plugin-mock', + { + host: 'localhost', + port: 9527, + } +]; + +// https://taro-docs.jd.com/docs/next/config#defineconfig-辅助函数 +export default defineConfig(async (merge, _env: ConfigEnv) => { + const baseConfig: UserConfigExport = { + projectName: 'boluo-app', + date: '2024-6-7', + designWidth: 750, + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 375: 2, + 828: 1.81 / 2 + }, + sourceRoot: 'src', + outputRoot: 'dist', + plugins: ['@tarojs/plugin-html'], + // plugins: ['@tarojs/plugin-html', MockPlugin], + defineConstants: { + }, + copy: { + patterns: [ + ], + options: { + } + }, + framework: 'react', + compiler: { + type: 'webpack5', + prebundle: { + exclude: ['@taroify/icons'] + } + }, + cache: { + enable: false // Webpack 持久化缓存配置,建议开启。默认配置请参考:https://docs.taro.zone/docs/config-detail#cache + }, + mini: { + // debugReact: true, + miniCssExtractPluginOption: { + ignoreOrder: true, + }, + postcss: { + pxtransform: { + enable: true, + config: { + + } + }, + url: { + enable: true, + config: { + limit: 1024 // 设定转换尺寸上限 + } + }, + cssModules: { + enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true + config: { + namingPattern: 'module', // 转换模式,取值为 global/module + generateScopedName: '[name]__[local]___[hash:base64:5]' + } + } + }, + webpackChain(chain) { + chain.resolve.plugin('tsconfig-paths').use(TsconfigPathsPlugin); + // chain.plugin('analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, []); + } + }, + h5: { + publicPath: '/', + staticDirectory: 'static', + output: { + filename: 'js/[name].[hash:8].js', + chunkFilename: 'js/[name].[chunkhash:8].js' + }, + miniCssExtractPluginOption: { + ignoreOrder: true, + filename: 'css/[name].[hash].css', + chunkFilename: 'css/[name].[chunkhash].css' + }, + postcss: { + autoprefixer: { + enable: true, + config: {} + }, + cssModules: { + enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true + config: { + namingPattern: 'module', // 转换模式,取值为 global/module + generateScopedName: '[name]__[local]___[hash:base64:5]' + } + } + }, + webpackChain(chain) { + chain.resolve.plugin('tsconfig-paths').use(TsconfigPathsPlugin) + } + }, + rn: { + appName: 'taroDemo', + postcss: { + cssModules: { + enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true + } + } + } + } + if (process.env.NODE_ENV === 'development') { + // 本地开发构建配置(不混淆压缩) + return merge({}, baseConfig, devConfig) + } + // 生产构建配置(默认开启压缩混淆等) + return merge({}, baseConfig, prodConfig) +}) diff --git a/config/prod.ts b/config/prod.ts new file mode 100644 index 0000000..c9ba67f --- /dev/null +++ b/config/prod.ts @@ -0,0 +1,32 @@ +import type { UserConfigExport } from "@tarojs/cli"; +export default { + mini: {}, + h5: { + /** + * WebpackChain 插件配置 + * @docs https://github.com/neutrinojs/webpack-chain + */ + // webpackChain (chain) { + // /** + // * 如果 h5 端编译后体积过大,可以使用 webpack-bundle-analyzer 插件对打包体积进行分析。 + // * @docs https://github.com/webpack-contrib/webpack-bundle-analyzer + // */ + // chain.plugin('analyzer') + // .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, []) + // /** + // * 如果 h5 端首屏加载时间过长,可以使用 prerender-spa-plugin 插件预加载首页。 + // * @docs https://github.com/chrisvfritz/prerender-spa-plugin + // */ + // const path = require('path') + // const Prerender = require('prerender-spa-plugin') + // const staticDir = path.join(__dirname, '..', 'dist') + // chain + // .plugin('prerender') + // .use(new Prerender({ + // staticDir, + // routes: [ '/pages/index/index' ], + // postProcess: (context) => ({ ...context, outputPath: path.join(staticDir, 'index.html') }) + // })) + // } + } +} satisfies UserConfigExport diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 0000000..2e07396 --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,6 @@ +const defineJestConfig = require('@tarojs/test-utils-react/dist/jest.js').default + +module.exports = defineJestConfig({ + testEnvironment: 'jsdom', + testMatch: ['/__tests__/**/*.(spec|test).[jt]s?(x)'] +}) diff --git a/mock/index.ts b/mock/index.ts new file mode 100644 index 0000000..2057fd0 --- /dev/null +++ b/mock/index.ts @@ -0,0 +1,194 @@ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const wrapperData = (data: any, code: number = 200, message: string = 'success') => { + if (code === 200) { + return data; + } + return { + data, + code, + message, + }; +}; + +let jobId = 0; +const getJobData = (size: number) => + new Array(size).fill(1).map(() => ({ + id: `${jobId++}`, + title: '滨江品牌淑女装兼职主播滨江品牌淑女装兼职主播滨江品牌淑女装兼职主播', + tags: ['女装', '抖音', '快手', '视频号', '直播 4-5h'], + employType: 'ALL', + salary: '时薪 200-300', + jobDescription: 'TOP级账号!5年直播团队体系成熟!', + publisher: '杭州主播群3-甲子', + publisherAvatar: '', + jobLocation: { + latitude: 39.961, + longitude: 116.4551, + cityCode: '430100', + countyCode: '430121', + address: '朝阳区望京街道', + }, + })); + +const JOB_DETAIL_DATA = { + id: `abcs`, + title: '滨江品牌淑女装兼职主播滨江品牌淑女装兼职主播滨江品牌淑女装兼职主播', + tags: ['女装', '抖音', '快手', '视频号', '直播 4-5h'], + employType: 'ALL', + salary: '时薪 200-300', + jobDescription: 'TOP级账号!5年直播团队体系成熟!', + publisher: '杭州主播群3-甲子', + publisherAvatar: '', + jobLocation: { + latitude: 39.961, + longitude: 116.4551, + cityCode: '430100', + countyCode: '430121', + address: '朝阳区望京街道', + }, + created: 1719122520631, + updated: 1719122520631, + imGroupId: '12345', + imGroupNick: '服装设计交流群', + isFollow: false, + sourceText: `可兼职可全职\n账号:FAIRWHALE时尚旗旗舰店\nTOP级账号!5年直播团队体系成熟!有成熟晋升机制!中少淑穿版好经验不足也可以报名!\n各路女装大神可以来无责分红机制!公司背景强大!资金不是问题!!\n时薪:3-800/H(能给),薪资:2W-8W+1-3%提成\n要求: +1.身高160-168。亲和力强,站播,貌美口齿清晰 +2.会控场能带动直播间气氛会拉流量会玩免费流 +3.中少淑穿版效果要好 +4.场均20-50w的都可以报名,都有机会晋升大号 +`, +}; + +let groupId = 0; +const getGroupList = (size: number) => + new Array(size).fill(1).map(() => ({ + id: `${groupId++}`, + imGroupId: '1', + imGroupNick: '广州主播主播🍒经纪群🍒经纪群经纪群', + joinedTime: 1719119060767, + allJobs: Math.floor(Math.random() * 1000), + groupAvatar: 'https://neighbourhood.cn/p_d.png', + })); + +const getJobListData = (emptyList: boolean = false) => { + if (emptyList) { + return { + page: 1, + pageSize: 10, + hasMore: false, + jobResults: [], + }; + } + return { + page: 1, + pageSize: 10, + hasMore: true, + jobResults: getJobData(10), + }; +}; + +const getUserJobListData = (emptyList: boolean = false) => { + if (emptyList) { + return { + page: 1, + pageSize: 10, + hasMore: false, + data: [], + }; + } + return { + page: 1, + pageSize: 10, + hasMore: true, + data: { + '2024-07-23': getJobData(10), + '2024-07-22': getJobData(10), + '2024-07-18': getJobData(10), + }, + }; +}; + +export const getGroupListData = (emptyList: boolean = false) => { + if (emptyList) { + return { + allGroups: [], + myJoinedGroups: [], + myCreatedGroups: [], + myFollowedGroups: [], + }; + } + return { + allGroups: getGroupList(10), + myJoinedGroups: getGroupList(10), + myCreatedGroups: getGroupList(10), + myFollowedGroups: getGroupList(10), + }; +}; + +const getProductListData = (emptyList: boolean = false) => { + if (emptyList) { + return []; + } + return [ + { + productId: 'job', + balance: 3, + created: 1719109060767, + updated: 1719109060767, + }, + { + productId: 'group', + balance: 2, + created: 1719109060767, + updated: 1719109060767, + }, + ]; +}; + +const mockData = { + 'POST /api/user/login': wrapperData({ + token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9', + expires: 3600, + }), + 'POST /api/location/get': wrapperData({ + provinceCode: '430000', + provinceDesc: '湖南省', + cityCode: '430100', + cityDesc: '长沙市', + }), + 'POST /api/user/get': wrapperData({ + userId: 'abc', + nickname: '微信用户9627', + avatarUrl: '', + isDefaultAvatar: true, + isDefaultNickname: true, + isBindPhone: false, + // isBindPhone: true, + }), + 'POST /api/user/setPhone': wrapperData({}), + 'POST /api/userGroup/follow': wrapperData({}), + 'POST /api/userGroup/list': wrapperData(getGroupListData(false)), + 'POST /api/job/search': wrapperData(getJobListData(false)), + 'POST /api/job/searchMyJobs': wrapperData(getJobListData(true)), + 'POST /api/job/get': wrapperData(JOB_DETAIL_DATA), + 'POST /api/job/user/searchMyDeclared': wrapperData(getUserJobListData(false)), + 'POST /api/product/listMyProduct': wrapperData(getProductListData(false)), + 'POST /api/product/getMyProductDetail': wrapperData({ balance: 2 }), + 'POST /api/product/getProductUseRecord': wrapperData(false), + // 'POST /api/product/getProductUseRecord': wrapperData({}), + // 'POST /api/product/use': wrapperData({}), + // 'POST /api/product/getProductUseRecord': wrapperData({ + // declarationTypeResult: { + // type: 0, + // publisherAcctNo: 'yeruth', + // }, + // }), + 'POST /api/product/use': wrapperData({ + declarationTypeResult: { + type: 0, + publisherAcctNo: 'yeruth', + }, + }), +}; + +export default mockData; diff --git a/package.json b/package.json new file mode 100644 index 0000000..528ad78 --- /dev/null +++ b/package.json @@ -0,0 +1,108 @@ +{ + "name": "boluo-app", + "version": "1.0.0", + "private": true, + "description": "boluo app", + "templateInfo": { + "name": "default", + "typescript": true, + "css": "Less", + "framework": "React" + }, + "scripts": { + "build:weapp": "taro build --type weapp", + "build:swan": "taro build --type swan", + "build:alipay": "taro build --type alipay", + "build:tt": "taro build --type tt", + "build:h5": "taro build --type h5", + "build:rn": "taro build --type rn", + "build:qq": "taro build --type qq", + "build:jd": "taro build --type jd", + "build:quickapp": "taro build --type quickapp", + "build:harmony-hybrid": "taro build --type harmony-hybrid", + "dev:weapp": "npm run build:weapp -- --watch", + "dev:swan": "npm run build:swan -- --watch", + "dev:alipay": "npm run build:alipay -- --watch", + "dev:tt": "npm run build:tt -- --watch", + "dev:h5": "npm run build:h5 -- --watch", + "dev:rn": "npm run build:rn -- --watch", + "dev:qq": "npm run build:qq -- --watch", + "dev:jd": "npm run build:jd -- --watch", + "dev:quickapp": "npm run build:quickapp -- --watch", + "dev:harmony-hybrid": "npm run build:harmony-hybrid -- --watch", + "test": "jest", + "lint:format": "npx prettier --write", + "lint:format-all": "npx prettier --write 'src/**/*.{ts,js,css,jsx,html,vue,tsx}'" + }, + "browserslist": [ + "last 3 versions", + "Android >= 4.1", + "ios >= 8" + ], + "author": "", + "dependencies": { + "@babel/runtime": "^7.21.5", + "@taroify/core": "^0.3.2-alpha.0", + "@taroify/icons": "0.6.4-alpha.0", + "@tarojs/components": "3.6.31", + "@tarojs/helper": "3.6.31", + "@tarojs/plugin-framework-react": "3.6.31", + "@tarojs/plugin-html": "^3.6.31", + "@tarojs/plugin-platform-alipay": "3.6.31", + "@tarojs/plugin-platform-h5": "3.6.31", + "@tarojs/plugin-platform-harmony-hybrid": "3.6.31", + "@tarojs/plugin-platform-jd": "3.6.31", + "@tarojs/plugin-platform-qq": "3.6.31", + "@tarojs/plugin-platform-swan": "3.6.31", + "@tarojs/plugin-platform-tt": "3.6.31", + "@tarojs/plugin-platform-weapp": "3.6.31", + "@tarojs/react": "3.6.31", + "@tarojs/runtime": "3.6.31", + "@tarojs/shared": "3.6.31", + "@tarojs/taro": "3.6.31", + "classnames": "^2.5.1", + "dayjs": "^1.11.11", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "lodash-es": "^4.17.21", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "react-redux": "^8.1.2", + "redux": "^4.2.1", + "redux-logger": "^3.0.6", + "redux-thunk": "^3.1.0" + }, + "devDependencies": { + "@babel/core": "^7.8.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", + "@tarojs/cli": "3.6.31", + "@tarojs/plugin-mock": "^0.0.9", + "@tarojs/taro-loader": "3.6.31", + "@tarojs/test-utils-react": "^0.1.1", + "@tarojs/webpack5-runner": "3.6.31", + "@types/jest": "^29.3.1", + "@types/node": "^18.15.11", + "@types/react": "^18.0.0", + "@types/webpack-env": "^1.13.6", + "@typescript-eslint/eslint-plugin": "^7.12.0", + "@typescript-eslint/parser": "^7.12.0", + "babel-plugin-import": "^1.13.8", + "babel-preset-taro": "3.6.31", + "eslint": "^8.12.0", + "eslint-config-taro": "3.6.31", + "eslint-plugin-import": "^2.12.0", + "eslint-plugin-react": "^7.8.2", + "eslint-plugin-react-hooks": "^4.2.0", + "jest": "^29.3.1", + "jest-environment-jsdom": "^29.5.0", + "postcss": "^8.4.18", + "prettier": "^3.3.1", + "react-refresh": "^0.11.0", + "stylelint": "^14.4.0", + "ts-node": "^10.9.1", + "tsconfig-paths-webpack-plugin": "^4.1.0", + "typescript": "^5.1.0", + "webpack": "5.78.0", + "webpack-bundle-analyzer": "^4.10.2" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..86b7d08 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,16524 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@babel/runtime': + specifier: ^7.21.5 + version: 7.26.10 + '@taroify/core': + specifier: ^0.3.2-alpha.0 + version: 0.3.2-alpha.0(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@taroify/icons': + specifier: 0.6.4-alpha.0 + version: 0.6.4-alpha.0(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1)) + '@tarojs/components': + specifier: 3.6.31 + version: 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + '@tarojs/helper': + specifier: 3.6.31 + version: 3.6.31 + '@tarojs/plugin-framework-react': + specifier: 3.6.31 + version: 3.6.31(@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.11.1(webpack@5.78.0(@swc/core@1.3.96)))(webpack@5.78.0(@swc/core@1.3.96)))(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(react-refresh@0.11.0)(react@18.3.1) + '@tarojs/plugin-html': + specifier: ^3.6.31 + version: 3.6.35(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/plugin-platform-alipay': + specifier: 3.6.31 + version: 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/plugin-platform-h5': + specifier: 3.6.31 + version: 3.6.31(@tarojs/helper@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(@types/react@18.3.18)(postcss@8.5.3) + '@tarojs/plugin-platform-harmony-hybrid': + specifier: 3.6.31 + version: 3.6.31(@tarojs/helper@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(@types/react@18.3.18)(postcss@8.5.3) + '@tarojs/plugin-platform-jd': + specifier: 3.6.31 + version: 3.6.31(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/plugin-platform-qq': + specifier: 3.6.31 + version: 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/plugin-platform-swan': + specifier: 3.6.31 + version: 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/plugin-platform-tt': + specifier: 3.6.31 + version: 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/plugin-platform-weapp': + specifier: 3.6.31 + version: 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/react': + specifier: 3.6.31 + version: 3.6.31(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(react@18.3.1) + '@tarojs/runtime': + specifier: 3.6.31 + version: 3.6.31(@tarojs/shared@3.6.31) + '@tarojs/shared': + specifier: 3.6.31 + version: 3.6.31 + '@tarojs/taro': + specifier: 3.6.31 + version: 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + classnames: + specifier: ^2.5.1 + version: 2.5.1 + dayjs: + specifier: ^1.11.11 + version: 1.11.13 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.1) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.5.3) + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + react: + specifier: ^18.0.0 + version: 18.3.1 + react-dom: + specifier: ^18.0.0 + version: 18.3.1(react@18.3.1) + react-redux: + specifier: ^8.1.2 + version: 8.1.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + redux: + specifier: ^4.2.1 + version: 4.2.1 + redux-logger: + specifier: ^3.0.6 + version: 3.0.6 + redux-thunk: + specifier: ^3.1.0 + version: 3.1.0(redux@4.2.1) + devDependencies: + '@babel/core': + specifier: ^7.8.0 + version: 7.26.10 + '@pmmmwh/react-refresh-webpack-plugin': + specifier: ^0.5.5 + version: 0.5.15(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.11.1(webpack@5.78.0(@swc/core@1.3.96)))(webpack@5.78.0(@swc/core@1.3.96)) + '@tarojs/cli': + specifier: 3.6.31 + version: 3.6.31(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/plugin-mock': + specifier: ^0.0.9 + version: 0.0.9 + '@tarojs/taro-loader': + specifier: 3.6.31 + version: 3.6.31(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + '@tarojs/test-utils-react': + specifier: ^0.1.1 + version: 0.1.1(4b8de927c7dd69f821e9a1275b0bb5f5) + '@tarojs/webpack5-runner': + specifier: 3.6.31 + version: 3.6.31(@babel/core@7.26.10)(@swc/core@1.3.96)(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(@types/react@18.3.18)(@vue/compiler-sfc@3.5.13)(postcss@8.5.3)(prettier@3.5.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2)(webpack@5.78.0(@swc/core@1.3.96)) + '@types/jest': + specifier: ^29.3.1 + version: 29.5.14 + '@types/node': + specifier: ^18.15.11 + version: 18.19.80 + '@types/react': + specifier: ^18.0.0 + version: 18.3.18 + '@types/webpack-env': + specifier: ^1.13.6 + version: 1.18.8 + '@typescript-eslint/eslint-plugin': + specifier: ^7.12.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1)(typescript@5.8.2) + '@typescript-eslint/parser': + specifier: ^7.12.0 + version: 7.18.0(eslint@8.57.1)(typescript@5.8.2) + babel-plugin-import: + specifier: ^1.13.8 + version: 1.13.8 + babel-preset-taro: + specifier: 3.6.31 + version: 3.6.31(@babel/core@7.26.10) + eslint: + specifier: ^8.12.0 + version: 8.57.1 + eslint-config-taro: + specifier: 3.6.31 + version: 3.6.31(@babel/core@7.26.10)(eslint@8.57.1)(typescript@5.8.2) + eslint-plugin-import: + specifier: ^2.12.0 + version: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1) + eslint-plugin-react: + specifier: ^7.8.2 + version: 7.37.4(eslint@8.57.1) + eslint-plugin-react-hooks: + specifier: ^4.2.0 + version: 4.6.2(eslint@8.57.1) + jest: + specifier: ^29.3.1 + version: 29.7.0(@types/node@18.19.80)(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2)) + jest-environment-jsdom: + specifier: ^29.5.0 + version: 29.7.0 + postcss: + specifier: ^8.4.18 + version: 8.5.3 + prettier: + specifier: ^3.3.1 + version: 3.5.3 + react-refresh: + specifier: ^0.11.0 + version: 0.11.0 + stylelint: + specifier: ^14.4.0 + version: 14.16.1 + ts-node: + specifier: ^10.9.1 + version: 10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2) + tsconfig-paths-webpack-plugin: + specifier: ^4.1.0 + version: 4.2.0 + typescript: + specifier: ^5.1.0 + version: 5.8.2 + webpack: + specifier: 5.78.0 + version: 5.78.0(@swc/core@1.3.96) + webpack-bundle-analyzer: + specifier: ^4.10.2 + version: 4.10.2 + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.8': + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.10': + resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} + engines: {node: '>=6.9.0'} + + '@babel/eslint-parser@7.26.10': + resolution: {integrity: sha512-QsfQZr4AiLpKqn7fz+j7SN+f43z2DZCgGyYbNJ2vJOqKfG4E6MZer1+jqGZqKJaxq/gdO2DC/nUu45+pOL5p2Q==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 + + '@babel/generator@7.26.10': + resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.26.9': + resolution: {integrity: sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.26.3': + resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.3': + resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.26.5': + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.10': + resolution: {integrity: sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.10': + resolution: {integrity: sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-async-generator-functions@7.20.7': + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-class-properties@7.18.6': + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-decorators@7.25.9': + resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-export-default-from@7.25.9': + resolution: {integrity: sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-object-rest-spread@7.20.7': + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-optional-catch-binding@7.18.6': + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-optional-chaining@7.21.0': + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.25.9': + resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-default-from@7.25.9': + resolution: {integrity: sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-flow@7.26.0': + resolution: {integrity: sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.26.8': + resolution: {integrity: sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.26.5': + resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.25.9': + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.26.3': + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-flow-strip-types@7.26.5': + resolution: {integrity: sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.26.9': + resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.26.3': + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': + resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.25.9': + resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.25.9': + resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.25.9': + resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.25.9': + resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.25.9': + resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.25.9': + resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.25.9': + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.26.10': + resolution: {integrity: sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.26.8': + resolution: {integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.26.7': + resolution: {integrity: sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.26.8': + resolution: {integrity: sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.26.9': + resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-react@7.26.3': + resolution: {integrity: sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.26.0': + resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/register@7.25.9': + resolution: {integrity: sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime-corejs3@7.26.10': + resolution: {integrity: sha512-uITFQYO68pMEYR46AHgQoyBg7KPPJDAbGn4jUTIRgCFJIp88MIBUianVOplhZDEec07bp9zIyr4Kp0FCyQzmWg==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.26.10': + resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.26.9': + resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.26.10': + resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.10': + resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@csstools/selector-specificity@2.2.0': + resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.10 + + '@devexpress/error-stack-parser@2.0.6': + resolution: {integrity: sha512-fneVypElGUH6Be39mlRZeAu00pccTlf4oVuzf9xPJD1cdEqI8NyAiQua/EW7lZdrbMUbgyXcJmfKPefhYius3A==} + + '@discoveryjs/json-ext@0.5.7': + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + + '@esbuild/aix-ppc64@0.19.12': + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.19.12': + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.19.12': + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.19.12': + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.19.12': + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.19.12': + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.19.12': + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.19.12': + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.19.12': + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.19.12': + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.19.12': + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.14.54': + resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.19.12': + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.19.12': + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.19.12': + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.19.12': + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.19.12': + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.19.12': + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.19.12': + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.19.12': + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.19.12': + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.19.12': + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.19.12': + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.19.12': + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.5.1': + resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.41.0': + resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@26.6.2': + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + + '@napi-rs/triples@1.2.0': + resolution: {integrity: sha512-HAPjR3bnCsdXBsATpDIP5WCrw0JcACwhhrwIAQhiR46n+jm+a2F8kBsfseAuWtSyQ+H3Yebt2k43B5dy+04yMA==} + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@parcel/css@1.14.0': + resolution: {integrity: sha512-r5tJWe6NF6lesfPw1N3g7N7WUKpHqi2ONnw9wl5ccSGGIxkmgcPaPQxfvmhdjXvQnktSuIOR0HjQXVXu+/en/w==} + engines: {node: '>= 12.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@pmmmwh/react-refresh-webpack-plugin@0.5.15': + resolution: {integrity: sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <5.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x || 5.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sindresorhus/is@0.14.0': + resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} + engines: {node: '>=6'} + + '@sindresorhus/is@0.7.0': + resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==} + engines: {node: '>=4'} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@stencil/core@2.22.3': + resolution: {integrity: sha512-kmVA0M/HojwsfkeHsifvHVIYe4l5tin7J5+DLgtl8h6WWfiMClND5K3ifCXXI2ETDNKiEk21p6jql3Fx9o2rng==} + engines: {node: '>=12.10.0', npm: '>=6.0.0'} + hasBin: true + + '@swc/core-darwin-arm64@1.3.96': + resolution: {integrity: sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.3.96': + resolution: {integrity: sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.3.96': + resolution: {integrity: sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.3.96': + resolution: {integrity: sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-arm64-musl@1.3.96': + resolution: {integrity: sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@swc/core-linux-x64-gnu@1.3.96': + resolution: {integrity: sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-musl@1.3.96': + resolution: {integrity: sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@swc/core-win32-arm64-msvc@1.3.96': + resolution: {integrity: sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.3.96': + resolution: {integrity: sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.3.96': + resolution: {integrity: sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.3.96': + resolution: {integrity: sha512-zwE3TLgoZwJfQygdv2SdCK9mRLYluwDOM53I+dT6Z5ZvrgVENmY3txvWDvduzkV+/8IuvrRbVezMpxcojadRdQ==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/register@0.1.10': + resolution: {integrity: sha512-6STwH/q4dc3pitXLVkV7sP0Hiy+zBsU2wOF1aXpXR95pnH3RYHKIsDC+gvesfyB7jxNT9OOZgcqOp9RPxVTx9A==} + deprecated: Use @swc-node/register instead + hasBin: true + peerDependencies: + '@swc/core': ^1.0.46 + + '@swc/types@0.1.19': + resolution: {integrity: sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA==} + + '@szmarczak/http-timer@1.1.2': + resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} + engines: {node: '>=6'} + + '@taroify/core@0.3.2-alpha.0': + resolution: {integrity: sha512-nb9K/7OkF9Ogprc9VPT+0OoNivssdzGd72AgFqd8POhYnkLIPkB8QDLQDyMtlP+MfBzOojhTpNa03JGEgi6t4g==} + peerDependencies: + '@tarojs/components': '>=3' + '@tarojs/taro': '>=3' + react: ^18.2.0 + + '@taroify/hooks@0.3.2-alpha.0': + resolution: {integrity: sha512-fx7imOKKLntjtSNoMdfwCN0NsZ88y/+9HWCLMEfanCCmfUDL4W1TSPfDLMAcxUFh82z3sZIuKw7I6aXUCoFqXA==} + peerDependencies: + '@tarojs/taro': '>=3' + lodash: ^4.17.21 + react: ^18.2.0 + + '@taroify/icons@0.3.2-alpha.0': + resolution: {integrity: sha512-yn8unzC3ArowtFvkukrymMz5DSfvXMmR0im7n8iOOqYNsebKGVx3b0dqXx4FYeNI+CWt0J4rg2QALvlL6IdAmA==} + peerDependencies: + '@tarojs/components': '>=3' + + '@taroify/icons@0.6.4-alpha.0': + resolution: {integrity: sha512-tnB+dwY9FMHz32fBk2phsFwv4ehvruJbn/BOaqUySaVF9nrpQF6Q0S3MxfcmIZOd5f2cAVrXnBEmwn330HI55g==} + peerDependencies: + '@tarojs/components': '>=3' + + '@tarojs/api@3.6.31': + resolution: {integrity: sha512-Eel8+kTKLqcm5ex1Gh6xBJGromARhvbJuE2PISP2TCzxrhb2BgJd8WmAlkgzDxY4kgDnkQY0HKvTgBL8ZesR7w==} + + '@tarojs/binding-darwin-arm64@3.6.31': + resolution: {integrity: sha512-1FmsPg89ZnjPagDxpzZpZvpSIXVWmzU4YGOZWnoFF9FijQTPQvUSvq7YoXVtudnzzBb7p5nKBfSj0m3bo6LV1g==} + engines: {node: '>= 16'} + cpu: [arm64] + os: [darwin] + + '@tarojs/binding-darwin-x64@3.6.31': + resolution: {integrity: sha512-O0ApK7p8oYxcOH4wuKl+n3TbZkCr7HfwAKTJz8V8ECg7le881bvbZPc7VCIOEoPpljj/y3uIaPO/3T0d35qnUA==} + engines: {node: '>= 16'} + cpu: [x64] + os: [darwin] + + '@tarojs/binding-linux-x64-gnu@3.6.31': + resolution: {integrity: sha512-aT6PQ5dlVYrVF0iKQbUpj7q3mAM06jzWOMHAKSu4uKGdXnspbEGrsrKPUexfEqAyvBzjrMHgcWQdokRgAfKpcw==} + engines: {node: '>= 16'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tarojs/binding-win32-x64-msvc@3.6.31': + resolution: {integrity: sha512-AiqSz+RPS16tc2KuP7PjY4kvVEEmCWiE9KxuYc640qau6FJ9xb+uL3Dkth04k1fpRMUx/YCYO89B36JubdndzA==} + engines: {node: '>= 16'} + cpu: [x64] + os: [win32] + + '@tarojs/binding@3.6.31': + resolution: {integrity: sha512-Lpj8Qwki0z+a2PtAZUzjk6FdbQp2RPWQLAGU+Fwgs1dpO1e/JH0CBu+M8iVrq1tW93Zm5ywZAzog2s0viBi6Dg==} + + '@tarojs/cli@3.6.31': + resolution: {integrity: sha512-MG1yWuZ6yxaL/5TqjxZG5Bde0vyT8DBPbJEOTqJzvC8kxrghNXD32yIO+wsHu/dN9ScdK8OgpZN1Y7okamRLPA==} + engines: {node: '>=16'} + hasBin: true + + '@tarojs/components-advanced@3.6.31': + resolution: {integrity: sha512-uKml2GsYH05wbdiJwUzzvTFv+fyK+Jh2LNjCd8OkX1AflNawUGMOlERa3BhxU0A9KLRo7gm+XB3p5B66Qf5uYg==} + peerDependencies: + '@tarojs/runtime': ~3.6.31 + '@tarojs/shared': ~3.6.31 + '@tarojs/taro': ~3.6.31 + react: '>=17' + vue: '*' + peerDependenciesMeta: + react: + optional: true + vue: + optional: true + + '@tarojs/components-react@3.6.31': + resolution: {integrity: sha512-hXvZKmk5kPscsw31P+kPEUtiSysNyQac+ycYn6XPeXfAxnEvE3vtsoWiLE48jsYvgZ/6d5+4R8jNkaqvEjBIaA==} + + '@tarojs/components@3.6.31': + resolution: {integrity: sha512-jdyjOwQCQZcYePalbXXTNc7ZkF8vakU5qVBjPGxXoCpMV+RW7zrONOHub6kbjfJiYWhIx5TgVvJt5KGSbT4nYg==} + peerDependencies: + '@types/react': '*' + '@types/react-native': '*' + vue: '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-native': + optional: true + vue: + optional: true + + '@tarojs/helper@3.6.31': + resolution: {integrity: sha512-Sis3JPY1tAAduvxHPK8y965xiGH4CI7XiCqVU/TEJNMNFAAgO4DzNG2/3V/uQD5Yiumsup/3AO3Oosc1AIvO1g==} + + '@tarojs/helper@3.6.35': + resolution: {integrity: sha512-BJblrUEyLchSWse9G9FT1HZYpmylS/+3XMBZ65DiifQd1/KhLhVHa2qiZoJpPfGQi8aG95qrNMUVZKmziXB5Pg==} + + '@tarojs/plugin-doctor-darwin-arm64@0.0.11': + resolution: {integrity: sha512-H3C0TQD7k9YalSR2kgrVEvP1TfhSeRQDQQXhSurLStNuTqhrk8JSzxbxYC/Of5edM/uu+5xOzT0YfMV2LKG5UA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tarojs/plugin-doctor-darwin-universal@0.0.11': + resolution: {integrity: sha512-iZXID/UBsFGkouXJV/g/UTogPJ9IqCNmqCQ/bTZYNnIPHxxCUVZj7R1or8f/RJk3IHi0WroZHVbkz/NF9IqMVA==} + engines: {node: '>= 10'} + os: [darwin] + + '@tarojs/plugin-doctor-darwin-x64@0.0.11': + resolution: {integrity: sha512-wNFty0LOq0lX2WMG3ea0IYsvSq0Y1Z24zIumSfnsL8R3x3AaKQBf0d/nzY++Wp0Kc7rEskS9gtYR7Z0b4oB9tA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tarojs/plugin-doctor-freebsd-x64@0.0.11': + resolution: {integrity: sha512-ymFqr5w8CdEvYMQS3zzRfmiAe/6yFF8b2sufvHHbggLDgdDoAQfOuXAMHH0tK4TQTM6hXdHi2Ii3xwGPFczPGg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tarojs/plugin-doctor-linux-arm-gnueabihf@0.0.11': + resolution: {integrity: sha512-Ti8g3/WyD/kPOV9RAQB/jZwLivwdf9v9ZmdPUb4T56c4ehhD7cOCInhc5/0TrDR2b882vTnVc3GLAgG/EiFliw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tarojs/plugin-doctor-linux-arm64-gnu@0.0.11': + resolution: {integrity: sha512-oirqs+UYX6lKNxjFW6zpUGliW3ovC/v3fw76c4E8I18KVgTTRLpcqDiXPBgId0cyr3xdtKG0idzE5RXL/cNJFg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tarojs/plugin-doctor-linux-arm64-musl@0.0.11': + resolution: {integrity: sha512-SXes1wj2MLQod50+9sgSZlN4eli3VXVxMNqdk03ArrWtFURCpuDiHwRERjoqlo91Hf4IxU6zU7ml86gPZ0dkaw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tarojs/plugin-doctor-linux-x64-gnu@0.0.11': + resolution: {integrity: sha512-nyW2tjzYA8nw39pKpaYtpGbEOZNRTV97Ir+UEvsuZbAr5F1lV2Q+2IwN8dGY41/lXw9JQay6FDRqUPRXAMB4kw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tarojs/plugin-doctor-linux-x64-musl@0.0.11': + resolution: {integrity: sha512-epKcAwJdVYMGmeWdqGZrdOS+nhDz4SiGlZqYMcDjSlGK7OM0wlSor6xpz59adYVe86t/a/gjimu5IT2ofVEfsA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tarojs/plugin-doctor-win32-ia32-msvc@0.0.11': + resolution: {integrity: sha512-UBKdbbtDK1QmsRZiKEjo+TtSt+E/ljIzx5wbDna2yEuDtJqBwNg6SqkYg3LxUiJK8O5hwwVJGdJWI9a9bHpI8w==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@tarojs/plugin-doctor-win32-x64-msvc@0.0.11': + resolution: {integrity: sha512-2ABKPwTpT93PIk6+s/cGGUnu32OcyfAzz5y9gpLQ/i3XwysPSBq9Lt6Z1VCD2DVPnloIdWU+NYk5gXhCoWZV5A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tarojs/plugin-doctor@0.0.11': + resolution: {integrity: sha512-oHxEGMQwtls2ZFUkhVho1U3RSYhlNvKeIJMVzxgCMrgCBqJcGdGKhNLDpgqvGqqRuSs9iSMBrC9QMY8xsmRo4g==} + engines: {node: '>= 10'} + + '@tarojs/plugin-framework-react@3.6.31': + resolution: {integrity: sha512-oU3uY0gRPGryjIgFKrH52Ql+go4dqDoGfl2TOVJJYtUbMWKMN2sz0Qcro+ouEJmLaTXGNOGgq1dTtsracmiXeA==} + peerDependencies: + '@pmmmwh/react-refresh-webpack-plugin': '*' + '@prefresh/webpack': '*' + '@tarojs/runtime': ~3.6.31 + '@tarojs/shared': ~3.6.31 + preact: '*' + react: '>=17' + react-refresh: '*' + peerDependenciesMeta: + '@pmmmwh/react-refresh-webpack-plugin': + optional: true + '@prefresh/webpack': + optional: true + preact: + optional: true + react: + optional: true + react-refresh: + optional: true + + '@tarojs/plugin-html@3.6.35': + resolution: {integrity: sha512-yWP+PeVou+4Iso/WdEhkss363s4u616Tlbxoo+l9Srp8Cf/Z/xJia5fLMGLZlcFVlhgso1UEBHVa9SKR0C5o6g==} + + '@tarojs/plugin-mock@0.0.9': + resolution: {integrity: sha512-Q4z4lHp2mHVByQJ8gtIq0Rct8vkEqvCmyTmv+EJNf9sJY3F5H1fmDNfgMVn2fyZj7TmxuSMq/FDtgNlEA4eTow==} + + '@tarojs/plugin-platform-alipay@3.6.31': + resolution: {integrity: sha512-4si+wV0XiOhawbVWo47z/cOLxI/5RzPemXqZ2yQSwWqQujaHQZno2qd5KRjLvj81odUlAoX8GvuQW/VLpGdUyA==} + peerDependencies: + '@tarojs/components': ~3.6.31 + + '@tarojs/plugin-platform-h5@3.6.31': + resolution: {integrity: sha512-M5FwnzYiPDaCB7n/9Wv+q22DZZIfoBLI3CWX06QTyhD8P6MEQbfb2W6lcli3TRMug+yLPct67BQSMfe0a/Mplw==} + + '@tarojs/plugin-platform-harmony-hybrid@3.6.31': + resolution: {integrity: sha512-mzXPHdJb0//52pJaPNAUnVFG63vAsC+Q6u5o9fq+Acxebcr+pUedrmT4lOzYurJJ55Bc27ReHyTnxp6LnMZ01g==} + + '@tarojs/plugin-platform-jd@3.6.31': + resolution: {integrity: sha512-3dho59VwUNJCw8QsIYV+vs/nivvx6zYprvu+IhTYBgKZGuLTAihUHYt1KWtX+itFYC5nrQU8p2kIeWcb4zZU7A==} + + '@tarojs/plugin-platform-qq@3.6.31': + resolution: {integrity: sha512-nPD2Rk2uzLyGf3N9m1dGLh7APdMF8lEfFaVWrYMY31IaUuFF5zBVsva2xhEhVRnE+FeDi3miZk+zt4APg8XCpw==} + peerDependencies: + '@tarojs/shared': ~3.6.31 + + '@tarojs/plugin-platform-swan@3.6.31': + resolution: {integrity: sha512-VdwG7Zz6SzHzeU0yIV5mAMl6Ne1O/xYhB1YxhM7HhARw96W7s7sGL9iyWUIhZ6g6p+fyeEEa59a/kt6/p41k7w==} + peerDependencies: + '@tarojs/components': ~3.6.31 + '@tarojs/shared': ~3.6.31 + + '@tarojs/plugin-platform-tt@3.6.31': + resolution: {integrity: sha512-G4oXuMPCbyWkmt+Vr2Mf0ummSSIQph0cpXZr4fy1SAsy+O0Djk3/Yddifw6fpD/NuRa/AiAh70xb9TyzyEpM7A==} + peerDependencies: + '@tarojs/components': ~3.6.31 + '@tarojs/shared': ~3.6.31 + + '@tarojs/plugin-platform-weapp@3.6.31': + resolution: {integrity: sha512-rei4hO730KuNWyVwP9dnsUl1Gz3rrar9naj5+J5BbKxawlHz6VAz9/3z4SPpLXy+wN30XCq9tX2oV8sn3qcq8g==} + peerDependencies: + '@tarojs/components': ~3.6.31 + '@tarojs/shared': ~3.6.31 + + '@tarojs/react@3.6.31': + resolution: {integrity: sha512-s7bShwl8omPx0r/zxe7q48RtLqgRzfEbeyvc2MVdmtHBuOoFxG1lq0YqRV/DzTSsoPIkR7wqT1pZ7KnPElYz1A==} + peerDependencies: + '@tarojs/runtime': ~3.6.31 + '@tarojs/shared': ~3.6.31 + + '@tarojs/router@3.6.31': + resolution: {integrity: sha512-v2sF2UbQUKgRYVxmlmBro2n3uBeZaskijVtzT7mHs+/x8bRrFLCslrhp3xxIKyYSQEH9082VZddIQf0MUttYtA==} + peerDependencies: + '@tarojs/runtime': 3.6.31 + '@tarojs/shared': 3.6.31 + '@tarojs/taro': 3.6.31 + + '@tarojs/runner-utils@3.6.31': + resolution: {integrity: sha512-pghfDsi92trCR7Cuyn14DjrdfO5QarBFV4Sv03jqAwrh80n0t25cNm0z3eGAr/fFrVT2/4hv4fjjC0EhmYPZew==} + + '@tarojs/runtime@3.6.31': + resolution: {integrity: sha512-+Sg4reXYjYXwaTWKqVhhk+O2wsAYAHkuqybDqaLYC46SLb/vE9/zeoH4CBobnD6Xcr+Xc3ZQE6SNfe9rT1Yhfw==} + peerDependencies: + '@tarojs/shared': ~3.6.31 + + '@tarojs/runtime@3.6.35': + resolution: {integrity: sha512-W8DbKfsChflWoSplYYf8IcWEemjPt6lwTATJn0YzLqSAWhtVfsQ8I5+Dw8qZVzdBxUwJI6WEywOgDgfxUQ0EEg==} + peerDependencies: + '@tarojs/shared': ~3.6.35 + + '@tarojs/service@3.6.31': + resolution: {integrity: sha512-GID2WpIA6CKQEujDd2lmKpwV/zWLUdBJta2tCU+xC0IEIlimsRkltnMnhtU4UF3RLuKtP9qlhbrycRg9GO/3VA==} + peerDependencies: + '@tarojs/shared': ~3.6.31 + '@tarojs/taro': ~3.6.31 + + '@tarojs/service@3.6.35': + resolution: {integrity: sha512-xwNmgGYXQt76RBmV+x1khmsO70gCESQNMJuoM7xjLJ32TQ+sRAf/T7QUJoKTfuPrfJuxtmt3lBCcWBx9sfr37A==} + peerDependencies: + '@tarojs/shared': ~3.6.35 + '@tarojs/taro': ~3.6.35 + + '@tarojs/shared@3.6.31': + resolution: {integrity: sha512-QVuUWcK5PkdHDw+8Y9KH3lxRB+zjmXVPuh/0lEZWCJBcYMjMW5+MkOLixvNXzpLq6Z7pwBC1SDsDLKIrx/5osg==} + + '@tarojs/shared@3.6.35': + resolution: {integrity: sha512-QqqxEtGAD9QMl62iXHANMYvKntEnx5srdr7xEqOYt21UJode81yv05eIyQ8NEOdmtXXkHJuzXPxivldSSTVDIg==} + + '@tarojs/taro-h5@3.6.31': + resolution: {integrity: sha512-VHIcOPEGKdNELi835ZRJwWxYBi6u8IJKNlWUvR0C6iY/NwGAFPK1nM23ImXK+aWb1cK7zj0dDBAXimZptfqpXw==} + peerDependencies: + '@tarojs/components': ~3.6.31 + + '@tarojs/taro-loader@3.6.31': + resolution: {integrity: sha512-nFod87ThAxEK9szutc3RePocXhg3sEgTu6PO1As78OPqCoqiek8d8/SlSiowPEatKyrrjJSY2b+/J44ER3CT3g==} + + '@tarojs/taro@3.6.31': + resolution: {integrity: sha512-vipzwvIcWx1pfln6LVs7pZ0nmGiltEyyFLNHzC+nUO+hqItPGlhpsQ4Ow5qxi+PoazMshKH5jcduIRSaxiB/ew==} + peerDependencies: + '@tarojs/helper': ~3.6.31 + '@tarojs/runtime': ~3.6.31 + '@types/react': '*' + '@types/webpack': '*' + '@types/webpack-dev-server': '*' + postcss: '*' + vue: '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/webpack': + optional: true + '@types/webpack-dev-server': + optional: true + postcss: + optional: true + vue: + optional: true + + '@tarojs/test-utils-dom@0.1.1': + resolution: {integrity: sha512-IbX/fhfxYZT1sZjFi3i9pGLypUa86I1/HW134BLsn2ByEID3MON1Zay9uT7qAFPQsfGuek/VbjjbyFfrGajULA==} + + '@tarojs/test-utils-react@0.1.1': + resolution: {integrity: sha512-8F+jqQCe3P37FqWl/Fmy5elH/1LsfSQsZMLWp5II27EdjBUfmXr95EjZ4DJjPJkbfuM4Z9LefjXVk3nghRRdqg==} + peerDependencies: + '@tarojs/components': ^3.6.0 + '@tarojs/helper': ^3.6.0 + '@tarojs/plugin-framework-react': ^3.6.0 + '@tarojs/plugin-platform-h5': ^3.6.0 + '@tarojs/react': ^3.6.0 + '@tarojs/runtime': ^3.6.0 + '@tarojs/shared': ^3.6.0 + react: ^18.0.0 + react-dom: ^18.0.0 + + '@tarojs/test-utils-shared@0.1.1': + resolution: {integrity: sha512-DnBFzVFrunaR8B80amqwfIAcYVp6kLEXlwC6nY2vfN3JeuMvUI6IOcKq1NqjapuNulI6hwfUKI4Drsz7GZS+cw==} + + '@tarojs/webpack5-prebundle@3.6.31': + resolution: {integrity: sha512-hpCvjThw152rTrvjg7OB/67xqhvkfVRBSib01AIs6715/m7UFvJjRkOf8sG3lWItPWxscnOM6tovQ9Z7LO9qBg==} + peerDependencies: + webpack: ^5.78.0 + + '@tarojs/webpack5-runner@3.6.31': + resolution: {integrity: sha512-7eVdI7zuUi7fx/jRn4ZisJ6Y8vZmoiLv9ccTYaQepwb1z8FN87MJ5ruw7XPSfRIK3lNxvMqGzTLmDYFq1uVcOg==} + peerDependencies: + '@tarojs/runtime': ~3.6.31 + '@tarojs/shared': ~3.6.31 + '@tarojs/taro': ~3.6.31 + postcss: ^8.4.18 + webpack: ^5.78.0 + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/archy@0.0.31': + resolution: {integrity: sha512-v+dxizsFVyXgD3EpFuqT9YjdEjbJmPxNf1QIX9ohZOhxh1ZF2yhqv3vYaeum9lg3VghhxS5S0a6yldN9J9lPEQ==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/bonjour@3.5.13': + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@0.0.51': + resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + + '@types/express-serve-static-core@4.19.6': + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + + '@types/express-serve-static-core@5.0.6': + resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/fs-extra@8.1.5': + resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/hoist-non-react-statics@3.3.6': + resolution: {integrity: sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==} + + '@types/html-minifier-terser@6.1.0': + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/http-proxy@1.17.16': + resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + + '@types/jsdom@20.0.1': + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/lodash.debounce@4.0.9': + resolution: {integrity: sha512-Ma5JcgTREwpLRwMM+XwBR7DaWe96nC38uCBDFKZWbNKD+osjVzdpnUSwBcqCptrp16sSOLBAUb50Car5I0TCsQ==} + + '@types/lodash@4.17.16': + resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@18.19.80': + resolution: {integrity: sha512-kEWeMwMeIvxYkeg1gTc01awpwLbfMRZXdIhwRcakd/KlK53jmRC26LqcbIt7fnAQTu5GzlnWmzA3H6+l1u6xxQ==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/qs@6.9.18': + resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/react@18.3.18': + resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/sass@1.45.0': + resolution: {integrity: sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==} + deprecated: This is a stub types definition. sass provides its own type definitions, so you do not need this installed. + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-index@1.9.4': + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + + '@types/sockjs@0.3.36': + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/use-sync-external-store@0.0.3': + resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} + + '@types/webpack-env@1.18.8': + resolution: {integrity: sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A==} + + '@types/ws@8.18.0': + resolution: {integrity: sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@15.0.19': + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@6.21.0': + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@6.21.0': + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@6.21.0': + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@6.21.0': + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@6.21.0': + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vant/area-data@1.5.2': + resolution: {integrity: sha512-Gtxgt6Rjgopt6234ANpO0bBsSwtjZ23lBlVDHIy8Mi2NJqyoj1vgVWY0dri8/2LCZAWzQ6EnwRrUVViUZ0cvMA==} + + '@vue/compiler-core@3.5.13': + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + + '@vue/compiler-dom@3.5.13': + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + + '@vue/compiler-sfc@3.5.13': + resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} + + '@vue/compiler-ssr@3.5.13': + resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + + '@vue/component-compiler-utils@3.3.0': + resolution: {integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==} + + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + + '@webassemblyjs/ast@1.11.1': + resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} + + '@webassemblyjs/floating-point-hex-parser@1.11.1': + resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} + + '@webassemblyjs/helper-api-error@1.11.1': + resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} + + '@webassemblyjs/helper-buffer@1.11.1': + resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} + + '@webassemblyjs/helper-numbers@1.11.1': + resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.1': + resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} + + '@webassemblyjs/helper-wasm-section@1.11.1': + resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} + + '@webassemblyjs/ieee754@1.11.1': + resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} + + '@webassemblyjs/leb128@1.11.1': + resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} + + '@webassemblyjs/utf8@1.11.1': + resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} + + '@webassemblyjs/wasm-edit@1.11.1': + resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} + + '@webassemblyjs/wasm-gen@1.11.1': + resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} + + '@webassemblyjs/wasm-opt@1.11.1': + resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} + + '@webassemblyjs/wasm-parser@1.11.1': + resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} + + '@webassemblyjs/wast-printer@1.11.1': + resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + abortcontroller-polyfill@1.7.8: + resolution: {integrity: sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + + acorn-import-assertions@1.9.0: + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + deprecated: package has been renamed to acorn-import-attributes + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} + + adm-zip@0.4.16: + resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} + engines: {node: '>=0.3.0'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-html@0.0.9: + resolution: {integrity: sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + archive-type@4.0.0: + resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==} + engines: {node: '>=4'} + + archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-differ@3.0.0: + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} + engines: {node: '>=8'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-union@3.0.1: + resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==} + engines: {node: '>=12'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + autoprefixer@9.8.8: + resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} + hasBin: true + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + + axios@1.8.3: + resolution: {integrity: sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==} + + babel-helper-evaluate-path@0.5.0: + resolution: {integrity: sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==} + + babel-helper-mark-eval-scopes@0.4.3: + resolution: {integrity: sha512-+d/mXPP33bhgHkdVOiPkmYoeXJ+rXRWi7OdhwpyseIqOS8CmzHQXHUp/+/Qr8baXsT0kjGpMHHofHs6C3cskdA==} + + babel-helper-remove-or-void@0.4.3: + resolution: {integrity: sha512-eYNceYtcGKpifHDir62gHJadVXdg9fAhuZEXiRQnJJ4Yi4oUTpqpNY//1pM4nVyjjDMPYaC2xSf0I+9IqVzwdA==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-loader@8.2.1: + resolution: {integrity: sha512-dMF8sb2KQ8kJl21GUjkW1HWmcsL39GOV5vnzjqrCzEPNY0S0UfMLnumidiwIajDSBmKhYf5iRW+HXaM4cvCKBw==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + + babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + + babel-plugin-import@1.13.8: + resolution: {integrity: sha512-36babpjra5m3gca44V6tSTomeBlPA7cHUynrE2WiQIm3rEGD9xy28MKsx5IdO45EbnpJY7Jrgd00C6Dwt/l/2Q==} + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-plugin-minify-dead-code-elimination@0.5.2: + resolution: {integrity: sha512-krq9Lwi0QIzyAlcNBXTL4usqUvevB4BzktdEsb8srcXC1AaYqRJiAQw6vdKdJSaXbz6snBvziGr6ch/aoRCfpA==} + + babel-plugin-polyfill-corejs2@0.4.12: + resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.11.1: + resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.3: + resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-transform-imports-api@1.0.0: + resolution: {integrity: sha512-EtPFtwUFwXy4HyRwXiR7dCijk2b1dd12bVs39oY8aMZUnypFEMrctGX6/YrhQzhCPFweV7NTPhc+fD4zItWzUA==} + + babel-plugin-transform-taroapi@3.6.31: + resolution: {integrity: sha512-tLlKh2vMo1ETDVFB+QHHRnsUCYnZwaKLWlCjWTe+IciaGC9aVXWhomARsco84CM4WxCO1N/40AhsdyvtPemwcg==} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-taro@3.6.31: + resolution: {integrity: sha512-3sP816MLvmOEU2LquAJ4xBMrH8nUslkjTNNsFJUuUHwctgm9VVXif1hoPxZQCxZIknHnLEA8Xr1QJxZiRQKjuw==} + peerDependencies: + '@babel/core': '*' + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@1.2.3: + resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + bonjour-service@1.3.0: + resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-alloc-unsafe@1.1.0: + resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} + + buffer-alloc@1.2.0: + resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-fill@1.0.0: + resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cacheable-request@2.1.4: + resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==} + + cacheable-request@6.1.0: + resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsite-record@4.1.5: + resolution: {integrity: sha512-OqeheDucGKifjQRx524URgV4z4NaKjocGhygTptDea+DLROre4ZEecA4KXDq+P7qlGCohYVNOh3qr+y5XH5Ftg==} + + callsite@1.0.0: + resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + + caniuse-lite@1.0.30001705: + resolution: {integrity: sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg==} + + capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + caw@2.0.1: + resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clean-css@4.2.4: + resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} + engines: {node: '>= 4.0'} + + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + + cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + + clone-response@1.0.2: + resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.0: + resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + configstore@5.0.1: + resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} + engines: {node: '>=8'} + + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + + consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + + consolidate@0.15.1: + resolution: {integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==} + engines: {node: '>= 0.10.0'} + deprecated: Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog + peerDependencies: + arc-templates: ^0.5.3 + atpl: '>=0.7.6' + babel-core: ^6.26.3 + bracket-template: ^1.1.5 + coffee-script: ^1.12.7 + dot: ^1.1.3 + dust: ^0.3.0 + dustjs-helpers: ^1.7.4 + dustjs-linkedin: ^2.7.5 + eco: ^1.1.0-rc-3 + ect: ^0.5.9 + ejs: ^3.1.5 + haml-coffee: ^1.14.1 + hamlet: ^0.3.3 + hamljs: ^0.6.2 + handlebars: ^4.7.6 + hogan.js: ^3.0.2 + htmling: ^0.0.8 + jade: ^1.11.0 + jazz: ^0.0.18 + jqtpl: ~1.1.0 + just: ^0.1.8 + liquid-node: ^3.0.1 + liquor: ^0.0.5 + lodash: ^4.17.20 + marko: ^3.14.4 + mote: ^0.2.0 + mustache: ^3.0.0 + nunjucks: ^3.2.2 + plates: ~0.4.11 + pug: ^3.0.0 + qejs: ^3.0.5 + ractive: ^1.3.12 + razor-tmpl: ^1.3.1 + react: ^16.13.1 + react-dom: ^16.13.1 + slm: ^2.0.0 + squirrelly: ^5.1.0 + swig: ^1.4.2 + swig-templates: ^2.0.3 + teacup: ^2.0.0 + templayed: '>=0.2.3' + then-jade: '*' + then-pug: '*' + tinyliquid: ^0.2.34 + toffee: ^0.3.6 + twig: ^1.15.2 + twing: ^5.0.2 + underscore: ^1.11.0 + vash: ^0.13.0 + velocityjs: ^2.0.1 + walrus: ^0.10.1 + whiskers: ^0.4.0 + peerDependenciesMeta: + arc-templates: + optional: true + atpl: + optional: true + babel-core: + optional: true + bracket-template: + optional: true + coffee-script: + optional: true + dot: + optional: true + dust: + optional: true + dustjs-helpers: + optional: true + dustjs-linkedin: + optional: true + eco: + optional: true + ect: + optional: true + ejs: + optional: true + haml-coffee: + optional: true + hamlet: + optional: true + hamljs: + optional: true + handlebars: + optional: true + hogan.js: + optional: true + htmling: + optional: true + jade: + optional: true + jazz: + optional: true + jqtpl: + optional: true + just: + optional: true + liquid-node: + optional: true + liquor: + optional: true + lodash: + optional: true + marko: + optional: true + mote: + optional: true + mustache: + optional: true + nunjucks: + optional: true + plates: + optional: true + pug: + optional: true + qejs: + optional: true + ractive: + optional: true + razor-tmpl: + optional: true + react: + optional: true + react-dom: + optional: true + slm: + optional: true + squirrelly: + optional: true + swig: + optional: true + swig-templates: + optional: true + teacup: + optional: true + templayed: + optional: true + then-jade: + optional: true + then-pug: + optional: true + tinyliquid: + optional: true + toffee: + optional: true + twig: + optional: true + twing: + optional: true + underscore: + optional: true + vash: + optional: true + velocityjs: + optional: true + walrus: + optional: true + whiskers: + optional: true + + constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + + copy-webpack-plugin@10.2.0: + resolution: {integrity: sha512-my6iXII95c78w14HzYCNya5TlJYa44lOppAge5GSTMM1SyDxNsVGCJvhP4/ld6snm8lzjn3XOonMZD6s1L86Og==} + engines: {node: '>= 12.20.0'} + peerDependencies: + webpack: ^5.1.0 + + core-js-compat@3.41.0: + resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} + + core-js-pure@3.41.0: + resolution: {integrity: sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==} + + core-js@3.41.0: + resolution: {integrity: sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==} + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + css-declaration-sorter@6.4.1: + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + + css-functions-list@3.2.3: + resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} + engines: {node: '>=12 || >=16'} + + css-loader@6.11.0: + resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + css-minimizer-webpack-plugin@3.4.1: + resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@parcel/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-tree@1.0.0-alpha.29: + resolution: {integrity: sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==} + engines: {node: '>=0.10.0'} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + css@3.0.0: + resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssnano-preset-default@5.2.14: + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano-utils@3.1.0: + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano@5.1.15: + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + csso@3.5.1: + resolution: {integrity: sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==} + engines: {node: '>=0.10.0'} + + csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + cuint@0.2.2: + resolution: {integrity: sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==} + + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + + data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + + data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + decompress-response@3.3.0: + resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} + engines: {node: '>=4'} + + decompress-tar@4.1.1: + resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==} + engines: {node: '>=4'} + + decompress-tarbz2@4.1.1: + resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==} + engines: {node: '>=4'} + + decompress-targz@4.1.1: + resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==} + engines: {node: '>=4'} + + decompress-unzip@4.0.1: + resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==} + engines: {node: '>=4'} + + decompress@4.2.1: + resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==} + engines: {node: '>=4'} + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-diff@0.3.8: + resolution: {integrity: sha512-yVn6RZmHiGnxRKR9sJb3iVV2XTF1Ghh2DiWRZ3dMnGc43yUdWWF/kX6lQyk3+P84iprfWKU/8zFTrlkvtFm1ug==} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@1.5.2: + resolution: {integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==} + engines: {node: '>=0.10.0'} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defer-to-connect@1.1.3: + resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depcheck@1.4.7: + resolution: {integrity: sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==} + engines: {node: '>=10'} + hasBin: true + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + deps-regex@0.2.0: + resolution: {integrity: sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + detect-port@1.6.1: + resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + engines: {node: '>= 4.0.0'} + hasBin: true + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dingtalk-jsapi@2.15.6: + resolution: {integrity: sha512-804mFz2AFV/H9ysmo7dLqMjSGOQgREsgQIuep+Xg+yNQeQtnUOYntElEzlB798Sj/691e4mMKz9mtQ7v9qdjuA==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + dom7@3.0.0: + resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dotenv-expand@9.0.0: + resolution: {integrity: sha512-uW8Hrhp5ammm9x7kBLR6jDfujgaDarNA02tprvZdyrJ7MpdzD1KyrIHG4l+YoC2fJ2UcdFdNWNWIjt+sexBHJw==} + engines: {node: '>=12'} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + + download-git-repo@2.0.0: + resolution: {integrity: sha512-al8ZOwpm/DvCd7XC8PupeuNlC2TrvsMxW3FOx1bCbHNBhP1lYjOn9KnPqnZ3o/jz1vxCC5NHGJA7LT+GYMLcHA==} + + download@7.1.0: + resolution: {integrity: sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==} + engines: {node: '>=6'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer3@0.1.5: + resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.119: + resolution: {integrity: sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + envinfo@7.14.0: + resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} + engines: {node: '>=4'} + hasBin: true + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + + es-module-lexer@0.10.5: + resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==} + + es-module-lexer@0.9.3: + resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + esbuild-android-64@0.14.54: + resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + esbuild-android-arm64@0.14.54: + resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + esbuild-darwin-64@0.14.54: + resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + esbuild-darwin-arm64@0.14.54: + resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + esbuild-freebsd-64@0.14.54: + resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + esbuild-freebsd-arm64@0.14.54: + resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + esbuild-linux-32@0.14.54: + resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + esbuild-linux-64@0.14.54: + resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + esbuild-linux-arm64@0.14.54: + resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + esbuild-linux-arm@0.14.54: + resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + esbuild-linux-mips64le@0.14.54: + resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + esbuild-linux-ppc64le@0.14.54: + resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + esbuild-linux-riscv64@0.14.54: + resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + esbuild-linux-s390x@0.14.54: + resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + esbuild-loader@2.18.0: + resolution: {integrity: sha512-AKqxM3bI+gvGPV8o6NAhR+cBxVO8+dh+O0OXBHIXXwuSGumckbPWHzZ17subjBGI2YEGyJ1STH7Haj8aCrwL/w==} + peerDependencies: + webpack: ^4.40.0 || ^5.0.0 + + esbuild-netbsd-64@0.14.54: + resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + esbuild-openbsd-64@0.14.54: + resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + esbuild-sunos-64@0.14.54: + resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + esbuild-windows-32@0.14.54: + resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + esbuild-windows-64@0.14.54: + resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + esbuild-windows-arm64@0.14.54: + resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + esbuild@0.14.54: + resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-goat@2.1.1: + resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} + engines: {node: '>=8'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-config-taro@3.6.31: + resolution: {integrity: sha512-LUcsET5LePhP01Kb8izUqPVJAhTR7nJPG8jM+SAg0nGgwsjPyxa2BpZp8qTl358d+sRjcsDA8aro7SuW20fymg==} + peerDependencies: + eslint: '*' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-prettier@5.2.3: + resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==} + engines: {node: ^14.18.0 || >=16.0.0} + 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 + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.37.4: + resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.41.0: + resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + expr-parser@1.0.0: + resolution: {integrity: sha512-ncuWTCWH0M5KbaYikXxZ3FG3Q+FTYIEXeXAbxYscdZLFNnR5Le5gRU2r/a/JUZHnxwBDZcxWEWzCoPQlW9Engg==} + + express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + + ext-list@2.2.2: + resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} + engines: {node: '>=0.10.0'} + + ext-name@5.0.0: + resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} + engines: {node: '>=4'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-loader@6.0.0: + resolution: {integrity: sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + file-type@3.9.0: + resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} + engines: {node: '>=0.10.0'} + + file-type@4.4.0: + resolution: {integrity: sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==} + engines: {node: '>=4'} + + file-type@5.2.0: + resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==} + engines: {node: '>=4'} + + file-type@6.2.0: + resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==} + engines: {node: '>=4'} + + file-type@8.1.0: + resolution: {integrity: sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==} + engines: {node: '>=6'} + + filename-reserved-regex@2.0.0: + resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} + engines: {node: '>=4'} + + filenamify@2.1.0: + resolution: {integrity: sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==} + engines: {node: '>=4'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + + find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + find-yarn-workspace-root@2.0.0: + resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} + + findup-sync@5.0.0: + resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} + engines: {node: '>= 10.13.0'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-port@5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-proxy@2.1.0: + resolution: {integrity: sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==} + engines: {node: '>=4'} + + get-stream@2.3.1: + resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==} + engines: {node: '>=0.10.0'} + + get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + + get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + + git-clone@0.1.0: + resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} + + giturl@1.0.3: + resolution: {integrity: sha512-qVDEXufVtYUzYqI5hoDUONh9GCEPi0n+e35KNDafdsNt9fPxB0nvFW/kFiw7W42wkg8TUyhBqb+t24yyaoc87A==} + engines: {node: '>= 0.10.0'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.2.6: + resolution: {integrity: sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@12.2.0: + resolution: {integrity: sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + + globs@0.1.4: + resolution: {integrity: sha512-D23dWbOq48vlOraoSigbcQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + got@8.3.2: + resolution: {integrity: sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==} + engines: {node: '>=4'} + + got@9.6.0: + resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} + engines: {node: '>=8.6'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + hammerjs@2.0.8: + resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==} + engines: {node: '>=0.8.0'} + + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + + har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + + har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbol-support-x@1.4.2: + resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-to-string-tag-x@1.4.1: + resolution: {integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-yarn@2.1.0: + resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} + engines: {node: '>=8'} + + hash-sum@1.0.2: + resolution: {integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + + highlight-es@1.0.3: + resolution: {integrity: sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==} + + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + + history@5.3.0: + resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} + + hls.js@1.5.20: + resolution: {integrity: sha512-uu0VXUK52JhihhnN/MVVo1lvqNNuhoxkonqgO3IpjvQiGpJBdIXMGkofjQb/j9zvV7a1SW8U9g1FslWx/1HOiQ==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + + html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + + html-minifier@4.0.0: + resolution: {integrity: sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==} + engines: {node: '>=6'} + hasBin: true + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + html-webpack-plugin@5.5.0: + resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==} + engines: {node: '>=10.13.0'} + peerDependencies: + webpack: ^5.20.0 + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + http-cache-semantics@3.8.1: + resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-parser-js@0.5.9: + resolution: {integrity: sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + http-proxy-middleware@1.3.1: + resolution: {integrity: sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==} + engines: {node: '>=8.0.0'} + + http-proxy-middleware@2.0.7: + resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ics@3.8.1: + resolution: {integrity: sha512-UqQlfkajfhrS4pUGQfGIJMYz/Jsl/ob3LqcfEhUmLbwumg+ZNkU0/6S734Vsjq3/FYNpEcZVKodLBoe+zBM69g==} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-lazy@2.1.0: + resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} + engines: {node: '>=4'} + + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + + inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} + + inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + into-stream@3.1.0: + resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} + engines: {node: '>=4'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-ci@2.0.0: + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + hasBin: true + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-es2016-keyword@1.0.0: + resolution: {integrity: sha512-JtZWPUwjdbQ1LIo9OSZ8MdkWEve198ors27vH+RzUUvZXXZkzXCxFnlUhzWYxy5IexQSRiXVw9j2q/tHMmkVYQ==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-invalid-path@1.0.2: + resolution: {integrity: sha512-6KLcFrPCEP3AFXMfnWrIFkZpYNBVzZAoBJJDEZKtI3LXkaDjM3uFMJQjxiizUuZTZ9Oh9FNv/soXbx5TcpaDmA==} + engines: {node: '>=6.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-mobile@4.0.0: + resolution: {integrity: sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew==} + + is-natural-number@4.0.1: + resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} + + is-npm@5.0.0: + resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} + engines: {node: '>=10'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-object@1.0.2: + resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-yarn-global@0.3.0: + resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + isurl@1.0.0: + resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} + engines: {node: '>= 4'} + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + j-component@1.4.9: + resolution: {integrity: sha512-7TaTylECTW4sRaDLaj463sTj9BK6/3rSD67um47ypLPwtZW3wPwynCQ9sdnEJmTIw9Jfy2ZLKWiSDRdaINv50w==} + + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + + javascript-stringify@2.1.0: + resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-jsdom@29.7.0: + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + js-tokens@3.0.2: + resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + + jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsdom@21.1.2: + resolution: {integrity: sha512-sCpFmK2jv+1sjff4u7fzft+pUh2KSUbUrEHYHyfSIbGTIcmnjyp83qg6qLwdJ/I3LpTXx33ACxeRL7Lsyc6lGQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.0: + resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonp-retry@1.0.3: + resolution: {integrity: sha512-/jmE9+shtKP+oIt2AWO9Wx+C27NTGpLCEw4QHOqpoV2X6ta374HE9C+EEdgu8r3iLKgFMx7u5j0mCwxWN8UdlA==} + + jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@3.0.0: + resolution: {integrity: sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==} + + keyv@3.1.0: + resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + + known-css-properties@0.26.0: + resolution: {integrity: sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==} + + latest-version@5.1.0: + resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} + engines: {node: '>=8'} + + less-loader@10.2.0: + resolution: {integrity: sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + + less@3.13.1: + resolution: {integrity: sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==} + engines: {node: '>=6'} + hasBin: true + + less@4.2.2: + resolution: {integrity: sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==} + engines: {node: '>=6'} + hasBin: true + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-darwin-arm64@1.29.3: + resolution: {integrity: sha512-fb7raKO3pXtlNbQbiMeEu8RbBVHnpyqAoxTyTRMEWFQWmscGC2wZxoHzZ+YKAepUuKT9uIW5vL2QbFivTgprZg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.3: + resolution: {integrity: sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.3: + resolution: {integrity: sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.3: + resolution: {integrity: sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.3: + resolution: {integrity: sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.29.3: + resolution: {integrity: sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.29.3: + resolution: {integrity: sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.29.3: + resolution: {integrity: sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.29.3: + resolution: {integrity: sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.3: + resolution: {integrity: sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.3: + resolution: {integrity: sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ==} + engines: {node: '>= 12.0.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + loader-utils@1.4.2: + resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} + engines: {node: '>=4.0.0'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + loglevel-plugin-prefix@0.8.4: + resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} + + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lower-case@1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lowercase-keys@1.0.0: + resolution: {integrity: sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==} + engines: {node: '>=0.10.0'} + + lowercase-keys@1.0.1: + resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} + engines: {node: '>=0.10.0'} + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + make-dir@1.3.0: + resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} + engines: {node: '>=4'} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + + mdn-data@1.1.4: + resolution: {integrity: sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==} + + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + meow@9.0.0: + resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} + engines: {node: '>=10'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-source-map@1.1.0: + resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + metro-react-native-babel-preset@0.72.4: + resolution: {integrity: sha512-YGCVaYe1H5fOFktdDdL9IwAyiXjPh1t2eZZFp3KFJak6fxKpN+q5PPhe1kzMa77dbCAqgImv43zkfGa6i27eyA==} + peerDependencies: + '@babel/core': '*' + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.5.2: + resolution: {integrity: sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + mini-css-extract-plugin@2.4.6: + resolution: {integrity: sha512-khHpc29bdsE9EQiGSLqQieLyMbGca+bkC42/BBL1gXC8yAS0nHpOTUCBYUK6En1FuRdfE9wKXhGtsab8vmsugg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@6.0.2: + resolution: {integrity: sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==} + engines: {node: '>=16 || 14 >=14.17'} + + miniprogram-api-typings@3.12.3: + resolution: {integrity: sha512-o7bOfrU28MEMCBWo83nXv0ROQSBFxJcfCl4f2wTYqah64ipC5RGqLJfvWJTWhlQt2ECVwspSzM8LgvnfMo7TEQ==} + + miniprogram-compiler@0.2.3: + resolution: {integrity: sha512-/MfFiXTBUwYxnrTbj1hgwk1+qGkMCTL1zi8IReOq/0SPVkUxpx19E89w+ohYCELFXkMfVbD+6ejrHh3Y1u5sVg==} + + miniprogram-exparser@2.29.1: + resolution: {integrity: sha512-f2LUVYcQ5O664nOHhrEbtR//hlqln88dRY0mIwuRncJfuXMCdK9FBk0vzNDG6EgaaeTt3iGLeFQLRHlhYktkXw==} + + miniprogram-simulate@1.6.1: + resolution: {integrity: sha512-WO+T1A1fYZV6qW4mLNEl/+Rtdpw339mPd8q0KkyGHUFbRCIMzIHVutn2UrhUbn6UWZpkGurKwDUckNkpLhJ9QA==} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mobile-detect@1.4.5: + resolution: {integrity: sha512-yc0LhH6tItlvfLBugVUEtgawwFU2sIe+cSdmRJJCTMZ5GEJyLxNyC/NIOAOGk67Fa8GNpOttO3Xz/1bHpXFD/g==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + + multimatch@5.0.0: + resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} + engines: {node: '>=10'} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.10: + resolution: {integrity: sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + native-request@1.1.2: + resolution: {integrity: sha512-/etjwrK0J4Ebbcnt35VMWnfiUX/B04uwGJxyJInagxDqf2z5drSt/lsOvEMWGYunz1kaLZAFrV4NDAbOoDKvAQ==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + no-case@2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-emoji@1.11.0: + resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-url@2.0.1: + resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} + engines: {node: '>=4'} + + normalize-url@4.5.1: + resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} + engines: {node: '>=8'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + npm-check@6.0.1: + resolution: {integrity: sha512-tlEhXU3689VLUHYEZTS/BC61vfeN2xSSZwoWDT6WLuenZTpDmGmNT5mtl15erTR0/A15ldK06/NEKg9jYJ9OTQ==} + engines: {node: '>=10.9.0'} + hasBin: true + + npm-conf@1.1.3: + resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==} + engines: {node: '>=4'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + num2fraction@1.2.2: + resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} + + nwsapi@2.2.18: + resolution: {integrity: sha512-p1TRH/edngVEHVbwqWnxUViEmq5znDvyB+Sik5cmuLpGOIfDf/39zLiq3swPF8Vakqn+gvNiOQAZu8djYlQILA==} + + oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-cancelable@0.4.1: + resolution: {integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==} + engines: {node: '>=4'} + + p-cancelable@1.1.0: + resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} + engines: {node: '>=6'} + + p-event@2.3.1: + resolution: {integrity: sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==} + engines: {node: '>=6'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-is-promise@1.1.0: + resolution: {integrity: sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==} + engines: {node: '>=4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + p-timeout@2.0.1: + resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==} + engines: {node: '>=4'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json@6.5.0: + resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} + engines: {node: '>=8'} + + param-case@2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + + path-to-regexp@3.3.0: + resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + picocolors@0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + + pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} + + platform@1.3.6: + resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + + please-upgrade-node@3.2.0: + resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-calc@8.2.4: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + + postcss-colormin@5.3.1: + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-convert-values@5.1.3: + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-comments@5.1.2: + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-duplicates@5.1.0: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-empty@5.1.1: + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-overridden@5.1.0: + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-html-transform@3.6.31: + resolution: {integrity: sha512-5XLKu/Vme5ONR83Z2IIgZP+WnHho+36+xqcv8tNP2DCjm2m0d91qHxhM3XyBjmLcQcJ0IXySOH972s/fndzjOw==} + peerDependencies: + postcss: ^8.4.18 + + postcss-import@14.1.0: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-loader@7.3.4: + resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} + engines: {node: '>= 14.15.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + + postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + + postcss-merge-longhand@5.1.7: + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-merge-rules@5.1.4: + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-font-values@5.1.0: + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-gradients@5.1.1: + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-params@5.1.4: + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-selectors@5.2.1: + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-normalize-charset@5.1.0: + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-display-values@5.1.0: + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-positions@5.1.1: + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-repeat-style@5.1.1: + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-string@5.1.0: + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-timing-functions@5.1.0: + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-unicode@5.1.1: + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-url@5.1.0: + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-whitespace@5.1.1: + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-ordered-values@5.1.3: + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-plugin-constparse@3.6.31: + resolution: {integrity: sha512-E2qRIel4dub7qOoZc84R5ti/2cVyyKN8nLeipZeewOnJJkw0HRA8iH33KcCWRmqU0FUphhbTBhNV231VfzgVUg==} + peerDependencies: + postcss: ^8.4.18 + + postcss-pxtransform@3.6.31: + resolution: {integrity: sha512-qe05folnOHXvAs/5LBlG2LMTqdHwfTPHzQVYIMvEiVDX3v3e/osCbV91zWYeopEgZsQ3RtyqqFYz5JR9ABpBTw==} + peerDependencies: + postcss: ^8.4.18 + + postcss-reduce-initial@5.1.2: + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-transforms@5.1.0: + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + + postcss-safe-parser@6.0.0: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-svgo@5.1.0: + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-unique-selectors@5.1.1: + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-url@10.1.3: + resolution: {integrity: sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==} + engines: {node: '>=10'} + peerDependencies: + postcss: ^8.0.0 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + preferred-pm@3.1.4: + resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} + engines: {node: '>=10'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prepend-http@2.0.0: + resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} + engines: {node: '>=4'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + + pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + pretty-time@1.1.0: + resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} + engines: {node: '>=4'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + promise-polyfill@7.1.2: + resolution: {integrity: sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==} + + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-expr@2.0.6: + resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pupa@2.1.1: + resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} + engines: {node: '>=8'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + + query-string@5.1.1: + resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} + engines: {node: '>=0.10.0'} + + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + rc-config-loader@4.1.3: + resolution: {integrity: sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-reconciler@0.27.0: + resolution: {integrity: sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^18.0.0 + + react-redux@8.1.3: + resolution: {integrity: sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==} + peerDependencies: + '@types/react': ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + react-native: '>=0.59' + redux: ^4 || ^5.0.0-beta.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + react-dom: + optional: true + react-native: + optional: true + redux: + optional: true + + react-refresh@0.11.0: + resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==} + engines: {node: '>=0.10.0'} + + react-refresh@0.4.3: + resolution: {integrity: sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==} + engines: {node: '>=0.10.0'} + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + redux-logger@3.0.6: + resolution: {integrity: sha512-JoCIok7bg/XpqA1JqCqXFypuqBbQzGQySrhFzewB7ThcnysTO30l4VCst86AuB9T9tuT03MAA56Jw2PNhRSNCg==} + + redux-thunk@3.1.0: + resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==} + peerDependencies: + redux: ^5.0.0 + + redux@4.2.1: + resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regex-parser@2.3.1: + resolution: {integrity: sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} + + registry-auth-token@4.2.2: + resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} + engines: {node: '>=6.0.0'} + + registry-url@5.1.0: + resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} + engines: {node: '>=8'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + + request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-package-name@2.0.1: + resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + + resolve-url-loader@5.0.0: + resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} + engines: {node: '>=12'} + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + responselike@1.0.2: + resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + runes2@1.1.4: + resolution: {integrity: sha512-LNPnEDPOOU4ehF71m5JoQyzT2yxwD6ZreFJ7MxZUAoMKNMY1XrAo60H1CUoX5ncSm0rIuKlqn9JZNRrRkNou2g==} + + rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass-loader@12.4.0: + resolution: {integrity: sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + sass: ^1.3.0 + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + + sass@1.50.0: + resolution: {integrity: sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==} + engines: {node: '>=12.0.0'} + hasBin: true + + sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.21.0: + resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + schema-utils@2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.3.0: + resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + engines: {node: '>= 10.13.0'} + + scss-bundle@3.1.2: + resolution: {integrity: sha512-lvxTwCKDLgzmRWhGwJ834ggtnEhs0G9FxSJRWte+NwlshVvBcQ/kOHHkpAGDpCxIMNGz/Utl0yd/MWyQAOBhqg==} + hasBin: true + + seek-bzip@1.0.6: + resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} + hasBin: true + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + + semver-diff@3.1.1: + resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} + engines: {node: '>=8'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + + sort-keys-length@1.0.1: + resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} + engines: {node: '>=0.10.0'} + + sort-keys@1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + + sort-keys@2.0.0: + resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} + engines: {node: '>=4'} + + source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-resolve@0.6.0: + resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + ssr-window@3.0.0: + resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==} + + stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.8.1: + resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} + + strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.fromcodepoint@0.2.1: + resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-dirs@2.1.0: + resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-outer@1.0.1: + resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} + engines: {node: '>=0.10.0'} + + style-loader@3.3.1: + resolution: {integrity: sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + style-search@0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + + stylehacks@5.1.1: + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + stylelint@14.16.1: + resolution: {integrity: sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + stylus-loader@6.2.0: + resolution: {integrity: sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + stylus: '>=0.52.4' + webpack: ^5.0.0 + + stylus@0.55.0: + resolution: {integrity: sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw==} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + + swiper@6.8.0: + resolution: {integrity: sha512-6H3e7VOihasMp8sPXNhRDkc61UD0XeFlefbWfUHecBLBTtmA+9WxJiKDBMdzgetK1cny+5+mKfVcsmxYgnEDSw==} + engines: {node: '>= 4.7.0'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + engines: {node: ^14.18.0 || >=16.0.0} + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + tapable@1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar-stream@1.6.2: + resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} + engines: {node: '>= 0.8.0'} + + terser-webpack-plugin@5.3.14: + resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + throat@6.0.2: + resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + + timed-out@4.0.1: + resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} + engines: {node: '>=0.10.0'} + + tiny-case@1.0.3: + resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-buffer@1.1.1: + resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} + + to-readable-stream@1.0.0: + resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} + engines: {node: '>=6'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + + tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + trim-repeated@1.0.0: + resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} + engines: {node: '>=0.10.0'} + + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + 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 + + tsconfig-paths-webpack-plugin@4.2.0: + resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} + engines: {node: '>=10.13.0'} + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typescript@5.8.2: + resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} + engines: {node: '>=14.17'} + hasBin: true + + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unescape-js@1.1.4: + resolution: {integrity: sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + + universal-router@8.3.0: + resolution: {integrity: sha512-cBkihRoHvRQAjdUnDE1GGuuw/TPAIi8z2pEsSmUVAWLeZdgjHzzAb1+0VOO6NvBOvySItOTQikzaGlRxRdJBnA==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + update-notifier@5.1.0: + resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} + engines: {node: '>=10'} + + upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + + upper-case@1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} + + upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-loader@4.1.0: + resolution: {integrity: sha512-IzgAAIC8wRrg6NYkFIJY09vtktQcsvU8V6HhtQj9PTefbYImzLB1hufqo4m+RyM5N3mLx5BqJKccgxJS+W3kqw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + + url-parse-lax@3.0.0: + resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} + engines: {node: '>=4'} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + url-to-options@1.0.1: + resolution: {integrity: sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==} + engines: {node: '>= 4'} + + use-sync-external-store@1.4.0: + resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@3.4.0: + resolution: {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. + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-compile-cache@2.4.0: + resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + + vm2@3.9.19: + resolution: {integrity: sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==} + engines: {node: '>=6.0'} + deprecated: The library contains critical security issues and should not be used for production! The maintenance of the project has been discontinued. Consider migrating your code to isolated-vm. + hasBin: true + + vue-hot-reload-api@2.3.4: + resolution: {integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==} + + vue-loader@15.11.1: + resolution: {integrity: sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==} + peerDependencies: + '@vue/compiler-sfc': ^3.0.8 + cache-loader: '*' + css-loader: '*' + prettier: '*' + vue-template-compiler: '*' + webpack: ^3.0.0 || ^4.1.0 || ^5.0.0-0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + cache-loader: + optional: true + prettier: + optional: true + vue-template-compiler: + optional: true + + vue-style-loader@4.1.3: + resolution: {integrity: sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==} + + vue-template-es2015-compiler@1.9.1: + resolution: {integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==} + + w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} + + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webpack-bundle-analyzer@4.10.2: + resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} + engines: {node: '>= 10.13.0'} + hasBin: true + + webpack-chain@6.5.1: + resolution: {integrity: sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==} + engines: {node: '>=8'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + webpack-dev-middleware@5.3.4: + resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + webpack-dev-server@4.11.1: + resolution: {integrity: sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + webpack-format-messages@2.0.6: + resolution: {integrity: sha512-JOUviZSCupGTf6uJjrxKMEyOawWws566e3phwSyuWBsQxuBU6Gm4QV5wdU8UfkPIhWyhAqSGKeq8fNE9Q4rs9Q==} + engines: {node: '>=6'} + + webpack-merge@4.2.2: + resolution: {integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==} + + webpack-sources@2.3.1: + resolution: {integrity: sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==} + engines: {node: '>=10.13.0'} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.5.0: + resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + + webpack@5.78.0: + resolution: {integrity: sha512-gT5DP72KInmE/3azEaQrISjTvLYlSM0j1Ezhht/KLVkrqtv10JoP/RXhwmX/frrutOPuSq3o5Vq0ehR/4Vmd1g==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + webpackbar@5.0.2: + resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} + engines: {node: '>=12'} + peerDependencies: + webpack: 3 || 4 || 5 + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + + whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-pm@2.2.0: + resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} + engines: {node: '>=8.15'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xdg-basedir@4.0.0: + resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} + engines: {node: '>=8'} + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + xxhashjs@0.2.2: + resolution: {integrity: sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yup@1.6.1: + resolution: {integrity: sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.8': {} + + '@babel/core@7.26.10': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.10 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helpers': 7.26.10 + '@babel/parser': 7.26.10 + '@babel/template': 7.26.9 + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/eslint-parser@7.26.10(@babel/core@7.26.10)(eslint@8.57.1)': + dependencies: + '@babel/core': 7.26.10 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.57.1 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + + '@babel/generator@7.26.10': + dependencies: + '@babel/parser': 7.26.10 + '@babel/types': 7.26.10 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.26.10 + + '@babel/helper-compilation-targets@7.26.5': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.26.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.26.10 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + debug: 4.4.0 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-environment-visitor@7.24.7': + dependencies: + '@babel/types': 7.26.10 + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.26.10 + + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.25.9': + dependencies: + '@babel/template': 7.26.9 + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.26.10': + dependencies: + '@babel/template': 7.26.9 + '@babel/types': 7.26.10 + + '@babel/parser@7.26.10': + dependencies: + '@babel/types': 7.26.10 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-export-default-from@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) + + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.10)': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + + '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.10) + + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-export-default-from@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-async-generator-functions@7.26.8(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) + '@babel/traverse': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + '@babel/traverse': 7.26.10 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/template': 7.26.9 + + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-flow-strip-types@7.26.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.10) + + '@babel/plugin-transform-for-of@7.26.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/types': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-runtime@7.26.10(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.10) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) + babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.10) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-template-literals@7.26.8(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-typeof-symbol@7.26.7(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-typescript@7.26.8(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/preset-env@7.26.9(@babel/core@7.26.10)': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.10) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.26.10) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-typeof-symbol': 7.26.7(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.10) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.10) + babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.10) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) + babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.10) + core-js-compat: 3.41.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/types': 7.26.10 + esutils: 2.0.3 + + '@babel/preset-react@7.26.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/register@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 + + '@babel/runtime-corejs3@7.26.10': + dependencies: + core-js-pure: 3.41.0 + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.26.10': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.26.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.10 + '@babel/types': 7.26.10 + + '@babel/traverse@7.26.10': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.10 + '@babel/parser': 7.26.10 + '@babel/template': 7.26.9 + '@babel/types': 7.26.10 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.10': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@bcoe/v8-coverage@0.2.3': {} + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.1.2)': + dependencies: + postcss-selector-parser: 6.1.2 + + '@devexpress/error-stack-parser@2.0.6': + dependencies: + stackframe: 1.3.4 + + '@discoveryjs/json-ext@0.5.7': {} + + '@esbuild/aix-ppc64@0.19.12': + optional: true + + '@esbuild/android-arm64@0.19.12': + optional: true + + '@esbuild/android-arm@0.19.12': + optional: true + + '@esbuild/android-x64@0.19.12': + optional: true + + '@esbuild/darwin-arm64@0.19.12': + optional: true + + '@esbuild/darwin-x64@0.19.12': + optional: true + + '@esbuild/freebsd-arm64@0.19.12': + optional: true + + '@esbuild/freebsd-x64@0.19.12': + optional: true + + '@esbuild/linux-arm64@0.19.12': + optional: true + + '@esbuild/linux-arm@0.19.12': + optional: true + + '@esbuild/linux-ia32@0.19.12': + optional: true + + '@esbuild/linux-loong64@0.14.54': + optional: true + + '@esbuild/linux-loong64@0.19.12': + optional: true + + '@esbuild/linux-mips64el@0.19.12': + optional: true + + '@esbuild/linux-ppc64@0.19.12': + optional: true + + '@esbuild/linux-riscv64@0.19.12': + optional: true + + '@esbuild/linux-s390x@0.19.12': + optional: true + + '@esbuild/linux-x64@0.19.12': + optional: true + + '@esbuild/netbsd-x64@0.19.12': + optional: true + + '@esbuild/openbsd-x64@0.19.12': + optional: true + + '@esbuild/sunos-x64@0.19.12': + optional: true + + '@esbuild/win32-arm64@0.19.12': + optional: true + + '@esbuild/win32-ia32@0.19.12': + optional: true + + '@esbuild/win32-x64@0.19.12': + optional: true + + '@eslint-community/eslint-utils@4.5.1(eslint@8.41.0)': + dependencies: + eslint: 8.41.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.5.1(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.41.0': {} + + '@eslint/js@8.57.1': {} + + '@hapi/hoek@9.3.0': {} + + '@hapi/topo@5.1.0': + dependencies: + '@hapi/hoek': 9.3.0 + + '@humanwhocodes/config-array@0.11.14': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.19.80 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.80 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@18.19.80)(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.80 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 18.19.80 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@29.7.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 18.19.80 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.26.10 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@26.6.2': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 18.19.80 + '@types/yargs': 15.0.19 + chalk: 4.1.2 + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 18.19.80 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@leichtgewicht/ip-codec@2.0.5': {} + + '@napi-rs/triples@1.2.0': {} + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + dependencies: + eslint-scope: 5.1.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@parcel/css@1.14.0': + dependencies: + lightningcss: 1.29.3 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.11.1(webpack@5.78.0(@swc/core@1.3.96)))(webpack@5.78.0(@swc/core@1.3.96))': + dependencies: + ansi-html: 0.0.9 + core-js-pure: 3.41.0 + error-stack-parser: 2.1.4 + html-entities: 2.5.2 + loader-utils: 2.0.4 + react-refresh: 0.11.0 + schema-utils: 4.3.0 + source-map: 0.7.4 + webpack: 5.78.0(@swc/core@1.3.96) + optionalDependencies: + type-fest: 2.19.0 + webpack-dev-server: 4.11.1(webpack@5.78.0(@swc/core@1.3.96)) + + '@polka/url@1.0.0-next.28': {} + + '@rtsao/scc@1.1.0': {} + + '@sideway/address@4.1.5': + dependencies: + '@hapi/hoek': 9.3.0 + + '@sideway/formula@3.0.1': {} + + '@sideway/pinpoint@2.0.0': {} + + '@sinclair/typebox@0.27.8': {} + + '@sindresorhus/is@0.14.0': {} + + '@sindresorhus/is@0.7.0': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@stencil/core@2.22.3': {} + + '@swc/core-darwin-arm64@1.3.96': + optional: true + + '@swc/core-darwin-x64@1.3.96': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.3.96': + optional: true + + '@swc/core-linux-arm64-gnu@1.3.96': + optional: true + + '@swc/core-linux-arm64-musl@1.3.96': + optional: true + + '@swc/core-linux-x64-gnu@1.3.96': + optional: true + + '@swc/core-linux-x64-musl@1.3.96': + optional: true + + '@swc/core-win32-arm64-msvc@1.3.96': + optional: true + + '@swc/core-win32-ia32-msvc@1.3.96': + optional: true + + '@swc/core-win32-x64-msvc@1.3.96': + optional: true + + '@swc/core@1.3.96': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.19 + optionalDependencies: + '@swc/core-darwin-arm64': 1.3.96 + '@swc/core-darwin-x64': 1.3.96 + '@swc/core-linux-arm-gnueabihf': 1.3.96 + '@swc/core-linux-arm64-gnu': 1.3.96 + '@swc/core-linux-arm64-musl': 1.3.96 + '@swc/core-linux-x64-gnu': 1.3.96 + '@swc/core-linux-x64-musl': 1.3.96 + '@swc/core-win32-arm64-msvc': 1.3.96 + '@swc/core-win32-ia32-msvc': 1.3.96 + '@swc/core-win32-x64-msvc': 1.3.96 + + '@swc/counter@0.1.3': {} + + '@swc/register@0.1.10(@swc/core@1.3.96)': + dependencies: + '@swc/core': 1.3.96 + lodash.clonedeep: 4.5.0 + pirates: 4.0.6 + source-map-support: 0.5.21 + + '@swc/types@0.1.19': + dependencies: + '@swc/counter': 0.1.3 + + '@szmarczak/http-timer@1.1.2': + dependencies: + defer-to-connect: 1.1.3 + + '@taroify/core@0.3.2-alpha.0(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@taroify/hooks': 0.3.2-alpha.0(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(lodash@4.17.21)(react@18.3.1) + '@taroify/icons': 0.3.2-alpha.0(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1)) + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + '@tarojs/taro': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + classnames: 2.5.1 + lodash: 4.17.21 + promise: 8.3.0 + raf: 3.4.1 + react: 18.3.1 + react-is: 18.3.1 + react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - react-dom + + '@taroify/hooks@0.3.2-alpha.0(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(lodash@4.17.21)(react@18.3.1)': + dependencies: + '@tarojs/taro': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + '@vant/area-data': 1.5.2 + lodash: 4.17.21 + react: 18.3.1 + + '@taroify/icons@0.3.2-alpha.0(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))': + dependencies: + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + classnames: 2.5.1 + + '@taroify/icons@0.6.4-alpha.0(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))': + dependencies: + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + classnames: 2.5.1 + + '@tarojs/api@3.6.31': + dependencies: + '@babel/runtime': 7.26.10 + '@tarojs/runtime': 3.6.31(@tarojs/shared@3.6.31) + '@tarojs/shared': 3.6.31 + + '@tarojs/binding-darwin-arm64@3.6.31': + optional: true + + '@tarojs/binding-darwin-x64@3.6.31': + optional: true + + '@tarojs/binding-linux-x64-gnu@3.6.31': + optional: true + + '@tarojs/binding-win32-x64-msvc@3.6.31': + optional: true + + '@tarojs/binding@3.6.31': + dependencies: + '@napi-rs/triples': 1.2.0 + optionalDependencies: + '@tarojs/binding-darwin-arm64': 3.6.31 + '@tarojs/binding-darwin-x64': 3.6.31 + '@tarojs/binding-linux-x64-gnu': 3.6.31 + '@tarojs/binding-win32-x64-msvc': 3.6.31 + + '@tarojs/cli@3.6.31(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))': + dependencies: + '@tarojs/binding': 3.6.31 + '@tarojs/helper': 3.6.31 + '@tarojs/plugin-doctor': 0.0.11 + '@tarojs/service': 3.6.31(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/shared': 3.6.31 + adm-zip: 0.4.16 + cli-highlight: 2.1.11 + download-git-repo: 2.0.0 + envinfo: 7.14.0 + eslint: 8.57.1 + glob: 7.2.3 + inquirer: 8.2.6 + latest-version: 5.1.0 + lodash: 4.17.21 + minimist: 1.2.8 + npm-check: 6.0.1 + ora: 5.4.1 + request: 2.88.2 + semver: 7.7.1 + validate-npm-package-name: 5.0.1 + xml2js: 0.5.0 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/taro' + - supports-color + + '@tarojs/components-advanced@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(@types/react@18.3.18)(react@18.3.1)': + dependencies: + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + '@tarojs/runtime': 3.6.31(@tarojs/shared@3.6.31) + '@tarojs/shared': 3.6.31 + '@tarojs/taro': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + classnames: 2.5.1 + csstype: 3.1.3 + memoize-one: 6.0.0 + postcss: 8.5.3 + tslib: 2.8.1 + optionalDependencies: + react: 18.3.1 + transitivePeerDependencies: + - '@tarojs/helper' + - '@types/react' + - '@types/react-native' + - '@types/webpack' + - '@types/webpack-dev-server' + + '@tarojs/components-react@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)': + dependencies: + '@babel/runtime': 7.26.10 + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + '@tarojs/taro': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + classnames: 2.5.1 + swiper: 6.8.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@tarojs/helper' + - '@tarojs/runtime' + - '@types/react' + - '@types/react-native' + - '@types/webpack' + - '@types/webpack-dev-server' + - postcss + - vue + + '@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1)': + dependencies: + '@stencil/core': 2.22.3 + '@tarojs/components-advanced': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(@types/react@18.3.18)(react@18.3.1) + '@tarojs/taro': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + classnames: 2.5.1 + hammerjs: 2.0.8 + hls.js: 1.5.20 + resolve-pathname: 3.0.0 + swiper: 6.8.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.18 + transitivePeerDependencies: + - '@tarojs/helper' + - '@tarojs/runtime' + - '@tarojs/shared' + - '@types/webpack' + - '@types/webpack-dev-server' + - postcss + - react + + '@tarojs/helper@3.6.31': + dependencies: + '@babel/core': 7.26.10 + '@babel/parser': 7.26.10 + '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.10) + '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) + '@babel/preset-env': 7.26.9(@babel/core@7.26.10) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.10) + '@babel/register': 7.25.9(@babel/core@7.26.10) + '@babel/runtime': 7.26.10 + '@babel/traverse': 7.26.10 + '@swc/core': 1.3.96 + '@swc/register': 0.1.10(@swc/core@1.3.96) + ansi-escapes: 4.3.2 + chalk: 3.0.0 + chokidar: 3.6.0 + cross-spawn: 7.0.6 + debug: 4.3.4 + dotenv: 16.4.7 + dotenv-expand: 9.0.0 + esbuild: 0.19.12 + find-yarn-workspace-root: 2.0.0 + fs-extra: 8.1.0 + lodash: 4.17.21 + require-from-string: 2.0.2 + resolve: 1.22.10 + supports-hyperlinks: 2.3.0 + yauzl: 2.10.0 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/helper@3.6.35': + dependencies: + '@babel/core': 7.26.10 + '@babel/parser': 7.26.10 + '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.10) + '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) + '@babel/preset-env': 7.26.9(@babel/core@7.26.10) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.10) + '@babel/register': 7.25.9(@babel/core@7.26.10) + '@babel/runtime': 7.26.10 + '@babel/traverse': 7.26.10 + '@swc/core': 1.3.96 + '@swc/register': 0.1.10(@swc/core@1.3.96) + ansi-escapes: 4.3.2 + chalk: 3.0.0 + chokidar: 3.6.0 + cross-spawn: 7.0.6 + debug: 4.3.4 + dotenv: 16.4.7 + dotenv-expand: 9.0.0 + esbuild: 0.19.12 + find-yarn-workspace-root: 2.0.0 + fs-extra: 8.1.0 + lodash: 4.17.21 + require-from-string: 2.0.2 + resolve: 1.22.10 + supports-hyperlinks: 2.3.0 + yauzl: 2.10.0 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/plugin-doctor-darwin-arm64@0.0.11': + optional: true + + '@tarojs/plugin-doctor-darwin-universal@0.0.11': + optional: true + + '@tarojs/plugin-doctor-darwin-x64@0.0.11': + optional: true + + '@tarojs/plugin-doctor-freebsd-x64@0.0.11': + optional: true + + '@tarojs/plugin-doctor-linux-arm-gnueabihf@0.0.11': + optional: true + + '@tarojs/plugin-doctor-linux-arm64-gnu@0.0.11': + optional: true + + '@tarojs/plugin-doctor-linux-arm64-musl@0.0.11': + optional: true + + '@tarojs/plugin-doctor-linux-x64-gnu@0.0.11': + optional: true + + '@tarojs/plugin-doctor-linux-x64-musl@0.0.11': + optional: true + + '@tarojs/plugin-doctor-win32-ia32-msvc@0.0.11': + optional: true + + '@tarojs/plugin-doctor-win32-x64-msvc@0.0.11': + optional: true + + '@tarojs/plugin-doctor@0.0.11': + dependencies: + eslint: 8.41.0 + glob: 10.2.6 + optionalDependencies: + '@tarojs/plugin-doctor-darwin-arm64': 0.0.11 + '@tarojs/plugin-doctor-darwin-universal': 0.0.11 + '@tarojs/plugin-doctor-darwin-x64': 0.0.11 + '@tarojs/plugin-doctor-freebsd-x64': 0.0.11 + '@tarojs/plugin-doctor-linux-arm-gnueabihf': 0.0.11 + '@tarojs/plugin-doctor-linux-arm64-gnu': 0.0.11 + '@tarojs/plugin-doctor-linux-arm64-musl': 0.0.11 + '@tarojs/plugin-doctor-linux-x64-gnu': 0.0.11 + '@tarojs/plugin-doctor-linux-x64-musl': 0.0.11 + '@tarojs/plugin-doctor-win32-ia32-msvc': 0.0.11 + '@tarojs/plugin-doctor-win32-x64-msvc': 0.0.11 + transitivePeerDependencies: + - supports-color + + '@tarojs/plugin-framework-react@3.6.31(@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.11.1(webpack@5.78.0(@swc/core@1.3.96)))(webpack@5.78.0(@swc/core@1.3.96)))(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(react-refresh@0.11.0)(react@18.3.1)': + dependencies: + '@tarojs/helper': 3.6.31 + '@tarojs/runtime': 3.6.31(@tarojs/shared@3.6.31) + '@tarojs/service': 3.6.31(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/shared': 3.6.31 + acorn: 8.14.1 + acorn-walk: 8.3.4 + lodash: 4.17.21 + optionalDependencies: + '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.11.1(webpack@5.78.0(@swc/core@1.3.96)))(webpack@5.78.0(@swc/core@1.3.96)) + react: 18.3.1 + react-refresh: 0.11.0 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/taro' + - supports-color + + '@tarojs/plugin-html@3.6.35(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))': + dependencies: + '@babel/generator': 7.26.10 + '@babel/parser': 7.26.10 + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 + '@tarojs/runtime': 3.6.35(@tarojs/shared@3.6.35) + '@tarojs/service': 3.6.35(@tarojs/shared@3.6.35)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/shared': 3.6.35 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/taro' + - supports-color + + '@tarojs/plugin-mock@0.0.9': + dependencies: + body-parser: 1.20.3 + cors: 2.8.5 + express: 4.21.2 + get-port: 5.1.1 + glob: 7.2.3 + http-proxy-middleware: 1.3.1 + path-to-regexp: 6.3.0 + transitivePeerDependencies: + - debug + - supports-color + + '@tarojs/plugin-platform-alipay@3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))': + dependencies: + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + '@tarojs/service': 3.6.31(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/shared': 3.6.31 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/taro' + - supports-color + + '@tarojs/plugin-platform-h5@3.6.31(@tarojs/helper@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(@types/react@18.3.18)(postcss@8.5.3)': + dependencies: + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + '@tarojs/components-react': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + '@tarojs/router': 3.6.31(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/runtime': 3.6.31(@tarojs/shared@3.6.31) + '@tarojs/service': 3.6.31(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/shared': 3.6.31 + '@tarojs/taro-h5': 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + babel-plugin-transform-taroapi: 3.6.31 + change-case: 4.1.2 + lodash-es: 4.17.21 + resolve: 1.22.10 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/helper' + - '@tarojs/taro' + - '@types/react' + - '@types/react-native' + - '@types/webpack' + - '@types/webpack-dev-server' + - postcss + - supports-color + - vue + + '@tarojs/plugin-platform-harmony-hybrid@3.6.31(@tarojs/helper@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(@types/react@18.3.18)(postcss@8.5.3)': + dependencies: + '@tarojs/api': 3.6.31 + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + '@tarojs/components-react': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + '@tarojs/plugin-platform-h5': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(@types/react@18.3.18)(postcss@8.5.3) + '@tarojs/router': 3.6.31(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/runtime': 3.6.31(@tarojs/shared@3.6.31) + '@tarojs/service': 3.6.31(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/shared': 3.6.31 + '@tarojs/taro-h5': 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + axios: 1.8.3 + babel-plugin-transform-taroapi: 3.6.31 + base64-js: 1.5.1 + change-case: 4.1.2 + jsonp-retry: 1.0.3 + lodash-es: 4.17.21 + query-string: 7.1.3 + resolve: 1.22.10 + whatwg-fetch: 3.6.20 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/helper' + - '@tarojs/taro' + - '@types/react' + - '@types/react-native' + - '@types/webpack' + - '@types/webpack-dev-server' + - debug + - postcss + - supports-color + - vue + + '@tarojs/plugin-platform-jd@3.6.31(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))': + dependencies: + '@tarojs/service': 3.6.31(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/shared': 3.6.31 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/taro' + - supports-color + + '@tarojs/plugin-platform-qq@3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))': + dependencies: + '@tarojs/plugin-platform-weapp': 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/service': 3.6.31(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/shared': 3.6.31 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/components' + - '@tarojs/taro' + - supports-color + + '@tarojs/plugin-platform-swan@3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))': + dependencies: + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + '@tarojs/service': 3.6.31(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/shared': 3.6.31 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/taro' + - supports-color + + '@tarojs/plugin-platform-tt@3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))': + dependencies: + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + '@tarojs/service': 3.6.31(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/shared': 3.6.31 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/taro' + - supports-color + + '@tarojs/plugin-platform-weapp@3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))': + dependencies: + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + '@tarojs/service': 3.6.31(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/shared': 3.6.31 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/taro' + - supports-color + + '@tarojs/react@3.6.31(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(react@18.3.1)': + dependencies: + '@tarojs/runtime': 3.6.31(@tarojs/shared@3.6.31) + '@tarojs/shared': 3.6.31 + react-reconciler: 0.27.0(react@18.3.1) + transitivePeerDependencies: + - react + + '@tarojs/router@3.6.31(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))': + dependencies: + '@tarojs/runtime': 3.6.31(@tarojs/shared@3.6.31) + '@tarojs/shared': 3.6.31 + '@tarojs/taro': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + dingtalk-jsapi: 2.15.6 + history: 5.3.0 + mobile-detect: 1.4.5 + query-string: 7.1.3 + tslib: 2.8.1 + universal-router: 8.3.0 + + '@tarojs/runner-utils@3.6.31': + dependencies: + '@tarojs/helper': 3.6.31 + scss-bundle: 3.1.2 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31)': + dependencies: + '@tarojs/shared': 3.6.31 + lodash-es: 4.17.21 + tslib: 2.8.1 + + '@tarojs/runtime@3.6.35(@tarojs/shared@3.6.35)': + dependencies: + '@tarojs/shared': 3.6.35 + lodash-es: 4.17.21 + tslib: 2.8.1 + + '@tarojs/service@3.6.31(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))': + dependencies: + '@tarojs/helper': 3.6.31 + '@tarojs/shared': 3.6.31 + '@tarojs/taro': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + joi: 17.13.3 + lodash: 4.17.21 + ora: 5.4.1 + resolve: 1.22.10 + tapable: 1.1.3 + webpack-merge: 4.2.2 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/service@3.6.35(@tarojs/shared@3.6.35)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))': + dependencies: + '@tarojs/helper': 3.6.35 + '@tarojs/shared': 3.6.35 + '@tarojs/taro': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + joi: 17.13.3 + lodash: 4.17.21 + ora: 5.4.1 + resolve: 1.22.10 + tapable: 1.1.3 + webpack-merge: 4.2.2 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + '@tarojs/shared@3.6.31': {} + + '@tarojs/shared@3.6.35': {} + + '@tarojs/taro-h5@3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))': + dependencies: + '@tarojs/api': 3.6.31 + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + '@tarojs/router': 3.6.31(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/runtime': 3.6.31(@tarojs/shared@3.6.31) + '@tarojs/shared': 3.6.31 + abortcontroller-polyfill: 1.7.8 + base64-js: 1.5.1 + ics: 3.8.1 + is-mobile: 4.0.0 + jsonp-retry: 1.0.3 + lodash-es: 4.17.21 + platform: 1.3.6 + query-string: 7.1.3 + tslib: 2.8.1 + whatwg-fetch: 3.6.20 + transitivePeerDependencies: + - '@tarojs/taro' + + '@tarojs/taro-loader@3.6.31(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)': + dependencies: + '@tarojs/helper': 3.6.31 + '@tarojs/taro': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + loader-utils: 1.4.2 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/runtime' + - '@types/react' + - '@types/webpack' + - '@types/webpack-dev-server' + - postcss + - supports-color + - vue + + '@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)': + dependencies: + '@tarojs/api': 3.6.31 + '@tarojs/helper': 3.6.31 + '@tarojs/runtime': 3.6.31(@tarojs/shared@3.6.31) + optionalDependencies: + '@types/react': 18.3.18 + postcss: 8.5.3 + + '@tarojs/test-utils-dom@0.1.1(@babel/core@7.26.10)': + dependencies: + '@babel/runtime': 7.26.10 + babel-jest: 29.7.0(@babel/core@7.26.10) + pretty-format: 29.7.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + + '@tarojs/test-utils-react@0.1.1(4b8de927c7dd69f821e9a1275b0bb5f5)': + dependencies: + '@babel/runtime': 7.26.10 + '@tarojs/components': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1) + '@tarojs/helper': 3.6.31 + '@tarojs/plugin-framework-react': 3.6.31(@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.11.1(webpack@5.78.0(@swc/core@1.3.96)))(webpack@5.78.0(@swc/core@1.3.96)))(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(react-refresh@0.11.0)(react@18.3.1) + '@tarojs/plugin-platform-h5': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(@types/react@18.3.18)(postcss@8.5.3) + '@tarojs/react': 3.6.31(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(react@18.3.1) + '@tarojs/runtime': 3.6.31(@tarojs/shared@3.6.31) + '@tarojs/shared': 3.6.31 + '@tarojs/test-utils-dom': 0.1.1(@babel/core@7.26.10) + '@tarojs/test-utils-shared': 0.1.1(@babel/core@7.26.10) + babel-jest: 29.7.0(@babel/core@7.26.10) + pretty-format: 29.7.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@babel/core' + - supports-color + + '@tarojs/test-utils-shared@0.1.1(@babel/core@7.26.10)': + dependencies: + '@babel/runtime': 7.26.10 + babel-jest: 29.7.0(@babel/core@7.26.10) + pretty-format: 29.7.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + + '@tarojs/webpack5-prebundle@3.6.31(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)(webpack@5.78.0(@swc/core@1.3.96))': + dependencies: + '@tarojs/helper': 3.6.31 + '@tarojs/shared': 3.6.31 + '@tarojs/taro': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + enhanced-resolve: 5.18.1 + es-module-lexer: 0.10.5 + lodash: 4.17.21 + webpack: 5.78.0(@swc/core@1.3.96) + webpack-chain: 6.5.1 + webpack-virtual-modules: 0.5.0 + transitivePeerDependencies: + - '@swc/helpers' + - '@tarojs/runtime' + - '@types/react' + - '@types/webpack' + - '@types/webpack-dev-server' + - postcss + - supports-color + - vue + + '@tarojs/webpack5-runner@3.6.31(@babel/core@7.26.10)(@swc/core@1.3.96)(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3))(@types/react@18.3.18)(@vue/compiler-sfc@3.5.13)(postcss@8.5.3)(prettier@3.5.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2)(webpack@5.78.0(@swc/core@1.3.96))': + dependencies: + '@parcel/css': 1.14.0 + '@tarojs/helper': 3.6.31 + '@tarojs/plugin-platform-alipay': 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/plugin-platform-jd': 3.6.31(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/plugin-platform-qq': 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/plugin-platform-swan': 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/plugin-platform-tt': 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/plugin-platform-weapp': 3.6.31(@tarojs/components@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@tarojs/shared@3.6.31)(@types/react@18.3.18)(postcss@8.5.3)(react@18.3.1))(@tarojs/shared@3.6.31)(@tarojs/taro@3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)) + '@tarojs/runner-utils': 3.6.31 + '@tarojs/runtime': 3.6.31(@tarojs/shared@3.6.31) + '@tarojs/shared': 3.6.31 + '@tarojs/taro': 3.6.31(@tarojs/helper@3.6.31)(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + '@tarojs/taro-loader': 3.6.31(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3) + '@tarojs/webpack5-prebundle': 3.6.31(@tarojs/runtime@3.6.31(@tarojs/shared@3.6.31))(@types/react@18.3.18)(postcss@8.5.3)(webpack@5.78.0(@swc/core@1.3.96)) + acorn-walk: 8.3.4 + autoprefixer: 9.8.8 + babel-loader: 8.2.1(@babel/core@7.26.10)(webpack@5.78.0(@swc/core@1.3.96)) + copy-webpack-plugin: 10.2.0(webpack@5.78.0(@swc/core@1.3.96)) + css-loader: 6.11.0(webpack@5.78.0(@swc/core@1.3.96)) + css-minimizer-webpack-plugin: 3.4.1(@parcel/css@1.14.0)(csso@5.0.5)(esbuild@0.19.12)(webpack@5.78.0(@swc/core@1.3.96)) + csso: 5.0.5 + detect-port: 1.6.1 + esbuild: 0.19.12 + esbuild-loader: 2.18.0(webpack@5.78.0(@swc/core@1.3.96)) + file-loader: 6.0.0(webpack@5.78.0(@swc/core@1.3.96)) + html-minifier: 4.0.0 + html-webpack-plugin: 5.5.0(webpack@5.78.0(@swc/core@1.3.96)) + jsdom: 21.1.2 + less: 4.2.2 + less-loader: 10.2.0(less@4.2.2)(webpack@5.78.0(@swc/core@1.3.96)) + loader-utils: 1.4.2 + lodash: 4.17.21 + md5: 2.3.0 + micromatch: 4.0.8 + mini-css-extract-plugin: 2.4.6(webpack@5.78.0(@swc/core@1.3.96)) + miniprogram-simulate: 1.6.1 + mkdirp: 1.0.4 + ora: 5.4.1 + postcss: 8.5.3 + postcss-html-transform: 3.6.31(postcss@8.5.3) + postcss-import: 14.1.0(postcss@8.5.3) + postcss-loader: 7.3.4(postcss@8.5.3)(typescript@5.8.2)(webpack@5.78.0(@swc/core@1.3.96)) + postcss-plugin-constparse: 3.6.31(postcss@8.5.3) + postcss-pxtransform: 3.6.31(postcss@8.5.3) + postcss-url: 10.1.3(postcss@8.5.3) + regenerator-runtime: 0.11.1 + resolve: 1.22.10 + resolve-url-loader: 5.0.0 + sass: 1.50.0 + sass-loader: 12.4.0(sass@1.50.0)(webpack@5.78.0(@swc/core@1.3.96)) + sax: 1.2.4 + style-loader: 3.3.1(webpack@5.78.0(@swc/core@1.3.96)) + stylus: 0.55.0 + stylus-loader: 6.2.0(stylus@0.55.0)(webpack@5.78.0(@swc/core@1.3.96)) + terser-webpack-plugin: 5.3.14(@swc/core@1.3.96)(esbuild@0.19.12)(webpack@5.78.0(@swc/core@1.3.96)) + url-loader: 4.1.0(file-loader@6.0.0(webpack@5.78.0(@swc/core@1.3.96)))(webpack@5.78.0(@swc/core@1.3.96)) + vm2: 3.9.19 + vue-loader: 15.11.1(@vue/compiler-sfc@3.5.13)(css-loader@6.11.0(webpack@5.78.0(@swc/core@1.3.96)))(lodash@4.17.21)(prettier@3.5.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.78.0(@swc/core@1.3.96)) + webpack: 5.78.0(@swc/core@1.3.96) + webpack-chain: 6.5.1 + webpack-dev-server: 4.11.1(webpack@5.78.0(@swc/core@1.3.96)) + webpack-format-messages: 2.0.6 + webpack-virtual-modules: 0.5.0 + webpackbar: 5.0.2(webpack@5.78.0(@swc/core@1.3.96)) + transitivePeerDependencies: + - '@babel/core' + - '@rspack/core' + - '@swc/core' + - '@swc/helpers' + - '@tarojs/components' + - '@types/react' + - '@types/webpack' + - '@types/webpack-dev-server' + - '@vue/compiler-sfc' + - arc-templates + - atpl + - babel-core + - bracket-template + - bufferutil + - cache-loader + - canvas + - clean-css + - coffee-script + - debug + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - fibers + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - marko + - mote + - mustache + - node-sass + - nunjucks + - plates + - prettier + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - supports-color + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - typescript + - uglify-js + - underscore + - utf-8-validate + - vash + - velocityjs + - vue + - vue-template-compiler + - walrus + - webpack-cli + - whiskers + + '@tootallnate/once@2.0.0': {} + + '@trysound/sax@0.2.0': {} + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@types/archy@0.0.31': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.26.10 + '@babel/types': 7.26.10 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.26.10 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.26.10 + '@babel/types': 7.26.10 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.26.10 + + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 18.19.80 + + '@types/bonjour@3.5.13': + dependencies: + '@types/node': 18.19.80 + + '@types/connect-history-api-fallback@1.5.4': + dependencies: + '@types/express-serve-static-core': 5.0.6 + '@types/node': 18.19.80 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 18.19.80 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 0.0.51 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 0.0.51 + '@types/json-schema': 7.0.15 + + '@types/estree@0.0.51': {} + + '@types/express-serve-static-core@4.19.6': + dependencies: + '@types/node': 18.19.80 + '@types/qs': 6.9.18 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express-serve-static-core@5.0.6': + dependencies: + '@types/node': 18.19.80 + '@types/qs': 6.9.18 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.9.18 + '@types/serve-static': 1.15.7 + + '@types/fs-extra@8.1.5': + dependencies: + '@types/node': 18.19.80 + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 18.19.80 + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 18.19.80 + + '@types/hoist-non-react-statics@3.3.6': + dependencies: + '@types/react': 18.3.18 + hoist-non-react-statics: 3.3.2 + + '@types/html-minifier-terser@6.1.0': {} + + '@types/http-errors@2.0.4': {} + + '@types/http-proxy@1.17.16': + dependencies: + '@types/node': 18.19.80 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@29.5.14': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + + '@types/jsdom@20.0.1': + dependencies: + '@types/node': 18.19.80 + '@types/tough-cookie': 4.0.5 + parse5: 7.2.1 + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 18.19.80 + + '@types/lodash.debounce@4.0.9': + dependencies: + '@types/lodash': 4.17.16 + + '@types/lodash@4.17.16': {} + + '@types/mime@1.3.5': {} + + '@types/minimatch@3.0.5': {} + + '@types/minimatch@5.1.2': {} + + '@types/minimist@1.2.5': {} + + '@types/ms@2.1.0': {} + + '@types/node-forge@1.3.11': + dependencies: + '@types/node': 18.19.80 + + '@types/node@18.19.80': + dependencies: + undici-types: 5.26.5 + + '@types/normalize-package-data@2.4.4': {} + + '@types/parse-json@4.0.2': {} + + '@types/prop-types@15.7.14': {} + + '@types/qs@6.9.18': {} + + '@types/range-parser@1.2.7': {} + + '@types/react@18.3.18': + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 18.19.80 + + '@types/retry@0.12.0': {} + + '@types/sass@1.45.0': + dependencies: + sass: 1.50.0 + + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 18.19.80 + + '@types/serve-index@1.9.4': + dependencies: + '@types/express': 4.17.21 + + '@types/serve-static@1.15.7': + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 18.19.80 + '@types/send': 0.17.4 + + '@types/sockjs@0.3.36': + dependencies: + '@types/node': 18.19.80 + + '@types/stack-utils@2.0.3': {} + + '@types/tough-cookie@4.0.5': {} + + '@types/use-sync-external-store@0.0.3': {} + + '@types/webpack-env@1.18.8': {} + + '@types/ws@8.18.0': + dependencies: + '@types/node': 18.19.80 + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@15.0.19': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1)(typescript@5.8.2)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.8.2) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.8.2) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.4.3(typescript@5.8.2) + optionalDependencies: + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2)': + dependencies: + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.0 + eslint: 8.57.1 + optionalDependencies: + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.2)': + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.4.0 + eslint: 8.57.1 + optionalDependencies: + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.8.2)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.2) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.8.2) + debug: 4.4.0 + eslint: 8.57.1 + ts-api-utils: 1.4.3(typescript@5.8.2) + optionalDependencies: + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@6.21.0': {} + + '@typescript-eslint/types@7.18.0': {} + + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.8.2)': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.0 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.7.1 + ts-api-utils: 1.4.3(typescript@5.8.2) + optionalDependencies: + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.8.2)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.4.0 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 1.4.3(typescript@5.8.2) + optionalDependencies: + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.8.2)': + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@8.57.1) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.2) + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.3.0': {} + + '@vant/area-data@1.5.2': {} + + '@vue/compiler-core@3.5.13': + dependencies: + '@babel/parser': 7.26.10 + '@vue/shared': 3.5.13 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.13': + dependencies: + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/compiler-sfc@3.5.13': + dependencies: + '@babel/parser': 7.26.10 + '@vue/compiler-core': 3.5.13 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + estree-walker: 2.0.2 + magic-string: 0.30.17 + postcss: 8.5.3 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.13': + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/component-compiler-utils@3.3.0(lodash@4.17.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + consolidate: 0.15.1(lodash@4.17.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + hash-sum: 1.0.2 + lru-cache: 4.1.5 + merge-source-map: 1.1.0 + postcss: 7.0.39 + postcss-selector-parser: 6.1.2 + source-map: 0.6.1 + vue-template-es2015-compiler: 1.9.1 + optionalDependencies: + prettier: 2.8.8 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + + '@vue/shared@3.5.13': {} + + '@webassemblyjs/ast@1.11.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + + '@webassemblyjs/floating-point-hex-parser@1.11.1': {} + + '@webassemblyjs/helper-api-error@1.11.1': {} + + '@webassemblyjs/helper-buffer@1.11.1': {} + + '@webassemblyjs/helper-numbers@1.11.1': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.11.1': {} + + '@webassemblyjs/helper-wasm-section@1.11.1': + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + + '@webassemblyjs/ieee754@1.11.1': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.11.1': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.11.1': {} + + '@webassemblyjs/wasm-edit@1.11.1': + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/helper-wasm-section': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-opt': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + '@webassemblyjs/wast-printer': 1.11.1 + + '@webassemblyjs/wasm-gen@1.11.1': + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 + + '@webassemblyjs/wasm-opt@1.11.1': + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + + '@webassemblyjs/wasm-parser@1.11.1': + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 + + '@webassemblyjs/wast-printer@1.11.1': + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + abab@2.0.6: {} + + abortcontroller-polyfill@1.7.8: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-globals@7.0.1: + dependencies: + acorn: 8.14.1 + acorn-walk: 8.3.4 + + acorn-import-assertions@1.9.0(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + address@1.2.2: {} + + adjust-sourcemap-loader@4.0.0: + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.3.1 + + adm-zip@0.4.16: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-html-community@0.0.8: {} + + ansi-html@0.0.9: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + archive-type@4.0.0: + dependencies: + file-type: 4.4.0 + + archy@1.0.0: {} + + arg@4.1.3: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-differ@3.0.0: {} + + array-flatten@1.1.1: {} + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + + array-union@2.1.0: {} + + array-union@3.0.1: {} + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + arrify@1.0.1: {} + + arrify@2.0.1: {} + + asap@2.0.6: {} + + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assert-plus@1.0.0: {} + + astral-regex@2.0.0: {} + + async-function@1.0.0: {} + + asynckit@0.4.0: {} + + atob@2.1.2: {} + + autoprefixer@9.8.8: + dependencies: + browserslist: 4.24.4 + caniuse-lite: 1.0.30001705 + normalize-range: 0.1.2 + num2fraction: 1.2.2 + picocolors: 0.2.1 + postcss: 7.0.39 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + aws-sign2@0.7.0: {} + + aws4@1.13.2: {} + + axios@1.8.3: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-helper-evaluate-path@0.5.0: {} + + babel-helper-mark-eval-scopes@0.4.3: {} + + babel-helper-remove-or-void@0.4.3: {} + + babel-jest@29.7.0(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.26.10) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-loader@8.2.1(@babel/core@7.26.10)(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + '@babel/core': 7.26.10 + find-cache-dir: 2.1.0 + loader-utils: 1.4.2 + make-dir: 2.1.0 + pify: 4.0.1 + schema-utils: 2.7.1 + webpack: 5.78.0(@swc/core@1.3.96) + + babel-plugin-dynamic-import-node@2.3.3: + dependencies: + object.assign: 4.1.7 + + babel-plugin-import@1.13.8: + dependencies: + '@babel/helper-module-imports': 7.25.9 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.26.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.26.9 + '@babel/types': 7.26.10 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 + + babel-plugin-minify-dead-code-elimination@0.5.2: + dependencies: + babel-helper-evaluate-path: 0.5.0 + babel-helper-mark-eval-scopes: 0.4.3 + babel-helper-remove-or-void: 0.4.3 + lodash: 4.17.21 + + babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.10): + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.10) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.10) + core-js-compat: 3.41.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + babel-plugin-transform-imports-api@1.0.0: + dependencies: + is-invalid-path: 1.0.2 + + babel-plugin-transform-taroapi@3.6.31: + dependencies: + lodash: 4.17.21 + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.10) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.10) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.10) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.10) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.10) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.10) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.10) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.10) + + babel-preset-jest@29.6.3(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) + + babel-preset-taro@3.6.31(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.10) + '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) + '@babel/preset-env': 7.26.9(@babel/core@7.26.10) + '@babel/preset-react': 7.26.3(@babel/core@7.26.10) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.10) + '@babel/runtime': 7.26.10 + '@babel/runtime-corejs3': 7.26.10 + '@tarojs/helper': 3.6.31 + babel-plugin-dynamic-import-node: 2.3.3 + babel-plugin-minify-dead-code-elimination: 0.5.2 + babel-plugin-transform-imports-api: 1.0.0 + core-js: 3.41.0 + lodash: 4.17.21 + metro-react-native-babel-preset: 0.72.4(@babel/core@7.26.10) + react-refresh: 0.11.0 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + + balanced-match@1.0.2: {} + + balanced-match@2.0.0: {} + + base64-js@1.5.1: {} + + batch@0.6.1: {} + + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + + big.js@5.2.2: {} + + binary-extensions@2.3.0: {} + + bl@1.2.3: + dependencies: + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bluebird@3.7.2: {} + + body-parser@1.20.3: + 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.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + bonjour-service@1.3.0: + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + + boolbase@1.0.0: {} + + boxen@5.1.2: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001705 + electron-to-chromium: 1.5.119 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.4) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-alloc-unsafe@1.1.0: {} + + buffer-alloc@1.2.0: + dependencies: + buffer-alloc-unsafe: 1.1.0 + buffer-fill: 1.0.0 + + buffer-crc32@0.2.13: {} + + buffer-fill@1.0.0: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bytes@3.1.2: {} + + cacheable-request@2.1.4: + dependencies: + clone-response: 1.0.2 + get-stream: 3.0.0 + http-cache-semantics: 3.8.1 + keyv: 3.0.0 + lowercase-keys: 1.0.0 + normalize-url: 2.0.1 + responselike: 1.0.2 + + cacheable-request@6.1.0: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 3.1.0 + lowercase-keys: 2.0.0 + normalize-url: 4.5.1 + responselike: 1.0.2 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsite-record@4.1.5: + dependencies: + '@devexpress/error-stack-parser': 2.0.6 + '@types/lodash': 4.17.16 + callsite: 1.0.0 + chalk: 2.4.2 + highlight-es: 1.0.3 + lodash: 4.17.21 + pinkie-promise: 2.0.1 + + callsite@1.0.0: {} + + callsites@3.1.0: {} + + camel-case@3.0.0: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + + camelcase-keys@6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-api@3.0.0: + dependencies: + browserslist: 4.24.4 + caniuse-lite: 1.0.30001705 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + + caniuse-lite@1.0.30001705: {} + + capital-case@1.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case-first: 2.0.2 + + caseless@0.12.0: {} + + caw@2.0.1: + dependencies: + get-proxy: 2.1.0 + isurl: 1.0.0 + tunnel-agent: 0.6.0 + url-to-options: 1.0.1 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + change-case@4.1.2: + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.8.1 + + char-regex@1.0.2: {} + + chardet@0.7.0: {} + + charenc@0.0.2: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chrome-trace-event@1.0.4: {} + + ci-info@2.0.0: {} + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.3: {} + + classnames@2.5.1: {} + + clean-css@4.2.4: + dependencies: + source-map: 0.6.1 + + clean-css@5.3.3: + dependencies: + source-map: 0.6.1 + + cli-boxes@2.2.1: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-highlight@2.1.11: + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + + cli-spinners@2.9.2: {} + + cli-width@3.0.0: {} + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-deep@4.0.1: + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + clone-response@1.0.2: + dependencies: + mimic-response: 1.0.1 + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + clone@1.0.4: {} + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colord@2.9.3: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + commondir@1.0.1: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.53.0 + + compression@1.8.0: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.0.2 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concat-map@0.0.1: {} + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + configstore@5.0.1: + dependencies: + dot-prop: 5.3.0 + graceful-fs: 4.2.11 + make-dir: 3.1.0 + unique-string: 2.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 4.0.0 + + connect-history-api-fallback@2.0.0: {} + + consola@2.15.3: {} + + consolidate@0.15.1(lodash@4.17.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + bluebird: 3.7.2 + optionalDependencies: + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + constant-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case: 2.0.2 + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie@0.7.1: {} + + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + + copy-webpack-plugin@10.2.0(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + fast-glob: 3.3.3 + glob-parent: 6.0.2 + globby: 12.2.0 + normalize-path: 3.0.0 + schema-utils: 4.3.0 + serialize-javascript: 6.0.2 + webpack: 5.78.0(@swc/core@1.3.96) + + core-js-compat@3.41.0: + dependencies: + browserslist: 4.24.4 + + core-js-pure@3.41.0: {} + + core-js@3.41.0: {} + + core-util-is@1.0.2: {} + + core-util-is@1.0.3: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cosmiconfig@8.3.6(typescript@5.8.2): + dependencies: + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.8.2 + + create-jest@29.7.0(@types/node@18.19.80)(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@18.19.80)(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-require@1.1.1: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypt@0.0.2: {} + + crypto-random-string@2.0.0: {} + + css-declaration-sorter@6.4.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + css-functions-list@3.2.3: {} + + css-loader@6.11.0(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.3) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.3) + postcss-modules-scope: 3.2.1(postcss@8.5.3) + postcss-modules-values: 4.0.0(postcss@8.5.3) + postcss-value-parser: 4.2.0 + semver: 7.7.1 + optionalDependencies: + webpack: 5.78.0(@swc/core@1.3.96) + + css-minimizer-webpack-plugin@3.4.1(@parcel/css@1.14.0)(csso@5.0.5)(esbuild@0.19.12)(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + cssnano: 5.1.15(postcss@8.5.3) + jest-worker: 27.5.1 + postcss: 8.5.3 + schema-utils: 4.3.0 + serialize-javascript: 6.0.2 + source-map: 0.6.1 + webpack: 5.78.0(@swc/core@1.3.96) + optionalDependencies: + '@parcel/css': 1.14.0 + csso: 5.0.5 + esbuild: 0.19.12 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-tree@1.0.0-alpha.29: + dependencies: + mdn-data: 1.1.4 + source-map: 0.5.7 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-what@6.1.0: {} + + css@3.0.0: + dependencies: + inherits: 2.0.4 + source-map: 0.6.1 + source-map-resolve: 0.6.0 + + cssesc@3.0.0: {} + + cssnano-preset-default@5.2.14(postcss@8.5.3): + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.5.3) + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-calc: 8.2.4(postcss@8.5.3) + postcss-colormin: 5.3.1(postcss@8.5.3) + postcss-convert-values: 5.1.3(postcss@8.5.3) + postcss-discard-comments: 5.1.2(postcss@8.5.3) + postcss-discard-duplicates: 5.1.0(postcss@8.5.3) + postcss-discard-empty: 5.1.1(postcss@8.5.3) + postcss-discard-overridden: 5.1.0(postcss@8.5.3) + postcss-merge-longhand: 5.1.7(postcss@8.5.3) + postcss-merge-rules: 5.1.4(postcss@8.5.3) + postcss-minify-font-values: 5.1.0(postcss@8.5.3) + postcss-minify-gradients: 5.1.1(postcss@8.5.3) + postcss-minify-params: 5.1.4(postcss@8.5.3) + postcss-minify-selectors: 5.2.1(postcss@8.5.3) + postcss-normalize-charset: 5.1.0(postcss@8.5.3) + postcss-normalize-display-values: 5.1.0(postcss@8.5.3) + postcss-normalize-positions: 5.1.1(postcss@8.5.3) + postcss-normalize-repeat-style: 5.1.1(postcss@8.5.3) + postcss-normalize-string: 5.1.0(postcss@8.5.3) + postcss-normalize-timing-functions: 5.1.0(postcss@8.5.3) + postcss-normalize-unicode: 5.1.1(postcss@8.5.3) + postcss-normalize-url: 5.1.0(postcss@8.5.3) + postcss-normalize-whitespace: 5.1.1(postcss@8.5.3) + postcss-ordered-values: 5.1.3(postcss@8.5.3) + postcss-reduce-initial: 5.1.2(postcss@8.5.3) + postcss-reduce-transforms: 5.1.0(postcss@8.5.3) + postcss-svgo: 5.1.0(postcss@8.5.3) + postcss-unique-selectors: 5.1.1(postcss@8.5.3) + + cssnano-utils@3.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + cssnano@5.1.15(postcss@8.5.3): + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.5.3) + lilconfig: 2.1.0 + postcss: 8.5.3 + yaml: 1.10.2 + + csso@3.5.1: + dependencies: + css-tree: 1.0.0-alpha.29 + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + cssom@0.3.8: {} + + cssom@0.5.0: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + cssstyle@3.0.0: + dependencies: + rrweb-cssom: 0.6.0 + + csstype@3.1.3: {} + + cuint@0.2.2: {} + + dashdash@1.14.1: + dependencies: + assert-plus: 1.0.0 + + data-urls@3.0.2: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + + data-urls@4.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + dayjs@1.11.13: {} + + debounce@1.2.1: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.1.0: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + + decimal.js@10.5.0: {} + + decode-uri-component@0.2.2: {} + + decompress-response@3.3.0: + dependencies: + mimic-response: 1.0.1 + + decompress-tar@4.1.1: + dependencies: + file-type: 5.2.0 + is-stream: 1.1.0 + tar-stream: 1.6.2 + + decompress-tarbz2@4.1.1: + dependencies: + decompress-tar: 4.1.1 + file-type: 6.2.0 + is-stream: 1.1.0 + seek-bzip: 1.0.6 + unbzip2-stream: 1.4.3 + + decompress-targz@4.1.1: + dependencies: + decompress-tar: 4.1.1 + file-type: 5.2.0 + is-stream: 1.1.0 + + decompress-unzip@4.0.1: + dependencies: + file-type: 3.9.0 + get-stream: 2.3.1 + pify: 2.3.0 + yauzl: 2.10.0 + + decompress@4.2.1: + dependencies: + decompress-tar: 4.1.1 + decompress-tarbz2: 4.1.1 + decompress-targz: 4.1.1 + decompress-unzip: 4.0.1 + graceful-fs: 4.2.11 + make-dir: 1.3.0 + pify: 2.3.0 + strip-dirs: 2.1.0 + + dedent@1.5.3: {} + + deep-diff@0.3.8: {} + + deep-extend@0.6.0: {} + + deep-is@0.1.4: {} + + deepmerge@1.5.2: {} + + deepmerge@4.3.1: {} + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + defer-to-connect@1.1.3: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delayed-stream@1.0.0: {} + + depcheck@1.4.7: + dependencies: + '@babel/parser': 7.26.10 + '@babel/traverse': 7.26.10 + '@vue/compiler-sfc': 3.5.13 + callsite: 1.0.0 + camelcase: 6.3.0 + cosmiconfig: 7.1.0 + debug: 4.4.0 + deps-regex: 0.2.0 + findup-sync: 5.0.0 + ignore: 5.3.2 + is-core-module: 2.16.1 + js-yaml: 3.14.1 + json5: 2.2.3 + lodash: 4.17.21 + minimatch: 7.4.6 + multimatch: 5.0.0 + please-upgrade-node: 3.2.0 + readdirp: 3.6.0 + require-package-name: 2.0.1 + resolve: 1.22.10 + resolve-from: 5.0.0 + semver: 7.7.1 + yargs: 16.2.0 + transitivePeerDependencies: + - supports-color + + depd@1.1.2: {} + + depd@2.0.0: {} + + deps-regex@0.2.0: {} + + destroy@1.2.0: {} + + detect-file@1.0.0: {} + + detect-libc@2.0.3: {} + + detect-newline@3.1.0: {} + + detect-node@2.1.0: {} + + detect-port@1.6.1: + dependencies: + address: 1.2.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + diff-sequences@29.6.3: {} + + diff@4.0.2: {} + + dingtalk-jsapi@2.15.6: + dependencies: + promise-polyfill: 7.1.2 + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dns-packet@5.6.1: + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-converter@0.2.0: + dependencies: + utila: 0.4.0 + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.26.10 + csstype: 3.1.3 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + dom7@3.0.0: + dependencies: + ssr-window: 3.0.0 + + domelementtype@2.3.0: {} + + domexception@4.0.0: + dependencies: + webidl-conversions: 7.0.0 + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dotenv-expand@9.0.0: {} + + dotenv@16.4.7: {} + + download-git-repo@2.0.0: + dependencies: + download: 7.1.0 + git-clone: 0.1.0 + rimraf: 2.7.1 + + download@7.1.0: + dependencies: + archive-type: 4.0.0 + caw: 2.0.1 + content-disposition: 0.5.4 + decompress: 4.2.1 + ext-name: 5.0.0 + file-type: 8.1.0 + filenamify: 2.1.0 + get-stream: 3.0.0 + got: 8.3.2 + make-dir: 1.3.0 + p-event: 2.3.1 + pify: 3.0.0 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer3@0.1.5: {} + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.119: {} + + emittery@0.13.1: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + emojis-list@3.0.0: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@2.2.0: {} + + entities@4.5.0: {} + + envinfo@7.14.0: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + es-abstract@1.23.9: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 + + es-module-lexer@0.10.5: {} + + es-module-lexer@0.9.3: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + esbuild-android-64@0.14.54: + optional: true + + esbuild-android-arm64@0.14.54: + optional: true + + esbuild-darwin-64@0.14.54: + optional: true + + esbuild-darwin-arm64@0.14.54: + optional: true + + esbuild-freebsd-64@0.14.54: + optional: true + + esbuild-freebsd-arm64@0.14.54: + optional: true + + esbuild-linux-32@0.14.54: + optional: true + + esbuild-linux-64@0.14.54: + optional: true + + esbuild-linux-arm64@0.14.54: + optional: true + + esbuild-linux-arm@0.14.54: + optional: true + + esbuild-linux-mips64le@0.14.54: + optional: true + + esbuild-linux-ppc64le@0.14.54: + optional: true + + esbuild-linux-riscv64@0.14.54: + optional: true + + esbuild-linux-s390x@0.14.54: + optional: true + + esbuild-loader@2.18.0(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + esbuild: 0.14.54 + joycon: 3.1.1 + json5: 2.2.3 + loader-utils: 2.0.4 + tapable: 2.2.1 + webpack: 5.78.0(@swc/core@1.3.96) + webpack-sources: 2.3.1 + + esbuild-netbsd-64@0.14.54: + optional: true + + esbuild-openbsd-64@0.14.54: + optional: true + + esbuild-sunos-64@0.14.54: + optional: true + + esbuild-windows-32@0.14.54: + optional: true + + esbuild-windows-64@0.14.54: + optional: true + + esbuild-windows-arm64@0.14.54: + optional: true + + esbuild@0.14.54: + optionalDependencies: + '@esbuild/linux-loong64': 0.14.54 + esbuild-android-64: 0.14.54 + esbuild-android-arm64: 0.14.54 + esbuild-darwin-64: 0.14.54 + esbuild-darwin-arm64: 0.14.54 + esbuild-freebsd-64: 0.14.54 + esbuild-freebsd-arm64: 0.14.54 + esbuild-linux-32: 0.14.54 + esbuild-linux-64: 0.14.54 + esbuild-linux-arm: 0.14.54 + esbuild-linux-arm64: 0.14.54 + esbuild-linux-mips64le: 0.14.54 + esbuild-linux-ppc64le: 0.14.54 + esbuild-linux-riscv64: 0.14.54 + esbuild-linux-s390x: 0.14.54 + esbuild-netbsd-64: 0.14.54 + esbuild-openbsd-64: 0.14.54 + esbuild-sunos-64: 0.14.54 + esbuild-windows-32: 0.14.54 + esbuild-windows-64: 0.14.54 + esbuild-windows-arm64: 0.14.54 + + esbuild@0.19.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + + escalade@3.2.0: {} + + escape-goat@2.1.1: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-prettier@9.1.0(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-config-taro@3.6.31(@babel/core@7.26.10)(eslint@8.57.1)(typescript@5.8.2): + dependencies: + '@babel/eslint-parser': 7.26.10(@babel/core@7.26.10)(eslint@8.57.1) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.2) + eslint: 8.57.1 + transitivePeerDependencies: + - '@babel/core' + - supports-color + - typescript + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.8.2) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.8.2) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-prettier@5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.5.3): + dependencies: + eslint: 8.57.1 + prettier: 3.5.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.2 + optionalDependencies: + '@types/eslint': 9.6.1 + eslint-config-prettier: 9.1.0(eslint@8.57.1) + + eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-plugin-react@7.37.4(eslint@8.57.1): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 8.57.1 + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@2.1.0: {} + + eslint-visitor-keys@3.4.3: {} + + eslint@8.41.0: + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@8.41.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.41.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + 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.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + 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.4 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + 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.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.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.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@4.0.7: {} + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit@0.1.2: {} + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + + expr-parser@1.0.0: {} + + express@4.21.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + ext-list@2.2.2: + dependencies: + mime-db: 1.53.0 + + ext-name@5.0.0: + dependencies: + ext-list: 2.2.2 + sort-keys-length: 1.0.1 + + extend@3.0.2: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + extsprintf@1.3.0: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.6: {} + + fastest-levenshtein@1.0.16: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + file-loader@6.0.0(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + loader-utils: 2.0.4 + schema-utils: 2.7.1 + webpack: 5.78.0(@swc/core@1.3.96) + + file-type@3.9.0: {} + + file-type@4.4.0: {} + + file-type@5.2.0: {} + + file-type@6.2.0: {} + + file-type@8.1.0: {} + + filename-reserved-regex@2.0.0: {} + + filenamify@2.1.0: + dependencies: + filename-reserved-regex: 2.0.0 + strip-outer: 1.0.1 + trim-repeated: 1.0.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@1.1.0: {} + + finalhandler@1.3.1: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-cache-dir@2.1.0: + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-yarn-workspace-root2@1.2.16: + dependencies: + micromatch: 4.0.8 + pkg-dir: 4.2.0 + + find-yarn-workspace-root@2.0.0: + dependencies: + micromatch: 4.0.8 + + findup-sync@5.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.8 + resolve-dir: 1.0.1 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.3: {} + + follow-redirects@1.15.9: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + forever-agent@0.6.1: {} + + form-data@2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + forwarded@0.2.0: {} + + fresh@0.5.2: {} + + from2@2.3.0: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + fs-constants@1.0.0: {} + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-monkey@1.0.6: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-package-type@0.1.0: {} + + get-port@5.1.1: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-proxy@2.1.0: + dependencies: + npm-conf: 1.1.3 + + get-stream@2.3.1: + dependencies: + object-assign: 4.1.1 + pinkie-promise: 2.0.1 + + get-stream@3.0.0: {} + + get-stream@4.1.0: + dependencies: + pump: 3.0.2 + + get-stream@5.2.0: + dependencies: + pump: 3.0.2 + + get-stream@6.0.1: {} + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + getpass@0.1.7: + dependencies: + assert-plus: 1.0.0 + + git-clone@0.1.0: {} + + giturl@1.0.3: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.2.6: + dependencies: + foreground-child: 3.3.1 + jackspeak: 2.3.6 + minimatch: 9.0.5 + minipass: 6.0.2 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-dirs@3.0.1: + dependencies: + ini: 2.0.0 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@12.2.0: + dependencies: + array-union: 3.0.1 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 4.0.0 + + globjoin@0.1.4: {} + + globs@0.1.4: + dependencies: + glob: 7.2.3 + + gopd@1.2.0: {} + + got@8.3.2: + dependencies: + '@sindresorhus/is': 0.7.0 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.3 + cacheable-request: 2.1.4 + decompress-response: 3.3.0 + duplexer3: 0.1.5 + get-stream: 3.0.0 + into-stream: 3.1.0 + is-retry-allowed: 1.2.0 + isurl: 1.0.0 + lowercase-keys: 1.0.1 + mimic-response: 1.0.1 + p-cancelable: 0.4.1 + p-timeout: 2.0.1 + pify: 3.0.0 + safe-buffer: 5.2.1 + timed-out: 4.0.1 + url-parse-lax: 3.0.0 + url-to-options: 1.0.1 + + got@9.6.0: + dependencies: + '@sindresorhus/is': 0.14.0 + '@szmarczak/http-timer': 1.1.2 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.3 + cacheable-request: 6.1.0 + decompress-response: 3.3.0 + duplexer3: 0.1.5 + get-stream: 4.1.0 + lowercase-keys: 1.0.1 + mimic-response: 1.0.1 + p-cancelable: 1.1.0 + to-readable-stream: 1.0.0 + url-parse-lax: 3.0.0 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + hammerjs@2.0.8: {} + + handle-thing@2.0.1: {} + + har-schema@2.0.0: {} + + har-validator@5.1.5: + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + + hard-rejection@2.1.0: {} + + has-bigints@1.1.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbol-support-x@1.4.2: {} + + has-symbols@1.1.0: {} + + has-to-string-tag-x@1.4.1: + dependencies: + has-symbol-support-x: 1.4.2 + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + has-yarn@2.1.0: {} + + hash-sum@1.0.2: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + header-case@2.0.4: + dependencies: + capital-case: 1.0.4 + tslib: 2.8.1 + + highlight-es@1.0.3: + dependencies: + chalk: 2.4.2 + is-es2016-keyword: 1.0.0 + js-tokens: 3.0.2 + + highlight.js@10.7.3: {} + + history@5.3.0: + dependencies: + '@babel/runtime': 7.26.10 + + hls.js@1.5.20: {} + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hosted-git-info@2.8.9: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + + html-encoding-sniffer@3.0.0: + dependencies: + whatwg-encoding: 2.0.0 + + html-entities@2.5.2: {} + + html-escaper@2.0.2: {} + + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.39.0 + + html-minifier@4.0.0: + dependencies: + camel-case: 3.0.0 + clean-css: 4.2.4 + commander: 2.20.3 + he: 1.2.0 + param-case: 2.1.1 + relateurl: 0.2.7 + uglify-js: 3.19.3 + + html-tags@3.3.1: {} + + html-webpack-plugin@5.5.0(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + webpack: 5.78.0(@swc/core@1.3.96) + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + http-cache-semantics@3.8.1: {} + + http-cache-semantics@4.1.1: {} + + http-deceiver@1.2.7: {} + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-parser-js@0.5.9: {} + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + http-proxy-middleware@1.3.1: + dependencies: + '@types/http-proxy': 1.17.16 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + transitivePeerDependencies: + - debug + + http-proxy-middleware@2.0.7(@types/express@4.17.21): + dependencies: + '@types/http-proxy': 1.17.16 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + optionalDependencies: + '@types/express': 4.17.21 + transitivePeerDependencies: + - debug + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + http-signature@1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ics@3.8.1: + dependencies: + nanoid: 3.3.10 + runes2: 1.1.4 + yup: 1.6.1 + + icss-utils@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + image-size@0.5.5: + optional: true + + immutable@4.3.7: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-lazy@2.1.0: {} + + import-lazy@4.0.0: {} + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@2.0.0: {} + + inquirer@7.3.3: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + + inquirer@8.2.6: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + into-stream@3.1.0: + dependencies: + from2: 2.3.0 + p-is-promise: 1.1.0 + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.2.0: {} + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-buffer@1.1.6: {} + + is-callable@1.2.7: {} + + is-ci@2.0.0: + dependencies: + ci-info: 2.0.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-docker@2.2.1: {} + + is-es2016-keyword@1.0.0: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-installed-globally@0.4.0: + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + + is-interactive@1.0.0: {} + + is-invalid-path@1.0.2: {} + + is-map@2.0.3: {} + + is-mobile@4.0.0: {} + + is-natural-number@4.0.1: {} + + is-npm@5.0.0: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-object@1.0.2: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@1.1.0: {} + + is-plain-obj@3.0.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-plain-object@5.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-retry-allowed@1.2.0: {} + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@1.1.0: {} + + is-stream@2.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-typedarray@1.0.0: {} + + is-unicode-supported@0.1.0: {} + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-what@3.14.1: {} + + is-windows@1.0.2: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-yarn-global@0.3.0: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isobject@3.0.1: {} + + isstream@0.1.2: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.26.10 + '@babel/parser': 7.26.10 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.26.10 + '@babel/parser': 7.26.10 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + isurl@1.0.0: + dependencies: + has-to-string-tag-x: 1.4.1 + is-object: 1.0.2 + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + j-component@1.4.9: + dependencies: + expr-parser: 1.0.0 + miniprogram-api-typings: 3.12.3 + miniprogram-exparser: 2.29.1 + + jackspeak@2.3.6: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + javascript-stringify@2.1.0: {} + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.80 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.3 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@18.19.80)(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.19.80)(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@18.19.80)(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@18.19.80)(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2)): + dependencies: + '@babel/core': 7.26.10 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.10) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 18.19.80 + ts-node: 10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + + jest-environment-jsdom@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 18.19.80 + jest-mock: 29.7.0 + jest-util: 29.7.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.80 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 18.19.80 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.26.2 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.19.80 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@29.7.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.10 + resolve.exports: 2.0.3 + slash: 3.0.0 + + jest-runner@29.7.0: + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.80 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.80 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.26.10 + '@babel/generator': 7.26.10 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) + '@babel/types': 7.26.10 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.19.80 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.80 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 18.19.80 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@29.7.0: + dependencies: + '@types/node': 18.19.80 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@29.7.0(@types/node@18.19.80)(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@18.19.80)(ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jiti@1.21.7: {} + + joi@17.13.3: + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + + joycon@3.1.1: {} + + js-tokens@3.0.2: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsbn@0.1.1: {} + + jsdom@20.0.3: + dependencies: + abab: 2.0.6 + acorn: 8.14.1 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.5.0 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.2 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.18 + parse5: 7.2.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.18.1 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsdom@21.1.2: + dependencies: + abab: 2.0.6 + acorn: 8.14.1 + acorn-globals: 7.0.1 + cssstyle: 3.0.0 + data-urls: 4.0.0 + decimal.js: 10.5.0 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.2 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.18 + parse5: 7.2.1 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + ws: 8.18.1 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.0.2: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-schema@0.4.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-safe@5.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonp-retry@1.0.3: + dependencies: + object-assign: 4.1.1 + + jsprim@1.4.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@3.0.0: + dependencies: + json-buffer: 3.0.0 + + keyv@3.1.0: + dependencies: + json-buffer: 3.0.0 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + klona@2.0.6: {} + + known-css-properties@0.26.0: {} + + latest-version@5.1.0: + dependencies: + package-json: 6.5.0 + + less-loader@10.2.0(less@4.2.2)(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + klona: 2.0.6 + less: 4.2.2 + webpack: 5.78.0(@swc/core@1.3.96) + + less@3.13.1: + dependencies: + copy-anything: 2.0.6 + tslib: 1.14.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + native-request: 1.1.2 + source-map: 0.6.1 + + less@4.2.2: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-darwin-arm64@1.29.3: + optional: true + + lightningcss-darwin-x64@1.29.3: + optional: true + + lightningcss-freebsd-x64@1.29.3: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.3: + optional: true + + lightningcss-linux-arm64-gnu@1.29.3: + optional: true + + lightningcss-linux-arm64-musl@1.29.3: + optional: true + + lightningcss-linux-x64-gnu@1.29.3: + optional: true + + lightningcss-linux-x64-musl@1.29.3: + optional: true + + lightningcss-win32-arm64-msvc@1.29.3: + optional: true + + lightningcss-win32-x64-msvc@1.29.3: + optional: true + + lightningcss@1.29.3: + dependencies: + detect-libc: 2.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.3 + lightningcss-darwin-x64: 1.29.3 + lightningcss-freebsd-x64: 1.29.3 + lightningcss-linux-arm-gnueabihf: 1.29.3 + lightningcss-linux-arm64-gnu: 1.29.3 + lightningcss-linux-arm64-musl: 1.29.3 + lightningcss-linux-x64-gnu: 1.29.3 + lightningcss-linux-x64-musl: 1.29.3 + lightningcss-win32-arm64-msvc: 1.29.3 + lightningcss-win32-x64-msvc: 1.29.3 + + lilconfig@2.1.0: {} + + lines-and-columns@1.2.4: {} + + load-yaml-file@0.2.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + loader-runner@4.3.0: {} + + loader-utils@1.4.2: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.2 + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.clonedeep@4.5.0: {} + + lodash.debounce@4.0.8: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.truncate@4.4.2: {} + + lodash.uniq@4.5.0: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + loglevel-plugin-prefix@0.8.4: {} + + loglevel@1.9.2: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lower-case@1.1.4: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lowercase-keys@1.0.0: {} + + lowercase-keys@1.0.1: {} + + lowercase-keys@2.0.0: {} + + lru-cache@10.4.3: {} + + lru-cache@4.1.5: + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-dir@1.3.0: + dependencies: + pify: 3.0.0 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-dir@4.0.0: + dependencies: + semver: 7.7.1 + + make-error@1.3.6: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + + math-intrinsics@1.1.0: {} + + mathml-tag-names@2.1.3: {} + + md5@2.3.0: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + + mdn-data@1.1.4: {} + + mdn-data@2.0.14: {} + + mdn-data@2.0.28: {} + + media-typer@0.3.0: {} + + memfs@3.5.3: + dependencies: + fs-monkey: 1.0.6 + + memoize-one@6.0.0: {} + + meow@9.0.0: + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + merge-descriptors@1.0.3: {} + + merge-source-map@1.1.0: + dependencies: + source-map: 0.6.1 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + metro-react-native-babel-preset@0.72.4(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.10) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.10) + '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.10) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.10) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.26.10) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.10) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.26.10) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) + '@babel/template': 7.26.9 + react-refresh: 0.4.3 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-db@1.53.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@2.5.2: {} + + mimic-fn@2.1.0: {} + + mimic-response@1.0.1: {} + + min-indent@1.0.1: {} + + mini-css-extract-plugin@2.4.6(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + schema-utils: 4.3.0 + webpack: 5.78.0(@swc/core@1.3.96) + + minimalistic-assert@1.0.1: {} + + minimatch@3.0.8: + dependencies: + brace-expansion: 1.1.11 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@7.4.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist-options@4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + minimist@1.2.8: {} + + minipass@6.0.2: {} + + miniprogram-api-typings@3.12.3: {} + + miniprogram-compiler@0.2.3: + dependencies: + glob: 7.2.3 + unescape-js: 1.1.4 + + miniprogram-exparser@2.29.1: {} + + miniprogram-simulate@1.6.1: + dependencies: + csso: 3.5.1 + j-component: 1.4.9 + less: 3.13.1 + miniprogram-compiler: 0.2.3 + postcss: 7.0.39 + pretty-format: 26.6.2 + + mkdirp@1.0.4: {} + + mobile-detect@1.4.5: {} + + mrmime@2.0.1: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + multicast-dns@7.2.5: + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + + multimatch@5.0.0: + dependencies: + '@types/minimatch': 3.0.5 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.1.2 + + mute-stream@0.0.8: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.10: {} + + native-request@1.1.2: + optional: true + + natural-compare@1.4.0: {} + + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.2.4 + optional: true + + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + neo-async@2.6.2: {} + + no-case@2.3.2: + dependencies: + lower-case: 1.1.4 + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-emoji@1.11.0: + dependencies: + lodash: 4.17.21 + + node-forge@1.3.1: {} + + node-int64@0.4.0: {} + + node-releases@2.0.19: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.10 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@3.0.3: + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.16.1 + semver: 7.7.1 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + normalize-url@2.0.1: + dependencies: + prepend-http: 2.0.0 + query-string: 5.1.1 + sort-keys: 2.0.0 + + normalize-url@4.5.1: {} + + normalize-url@6.1.0: {} + + npm-check@6.0.1: + dependencies: + callsite-record: 4.1.5 + chalk: 4.1.2 + co: 4.6.0 + depcheck: 1.4.7 + execa: 5.1.1 + giturl: 1.0.3 + global-modules: 2.0.0 + globby: 11.1.0 + inquirer: 7.3.3 + is-ci: 2.0.0 + lodash: 4.17.21 + meow: 9.0.0 + minimatch: 3.1.2 + node-emoji: 1.11.0 + ora: 5.4.1 + package-json: 6.5.0 + path-exists: 4.0.0 + pkg-dir: 5.0.0 + preferred-pm: 3.1.4 + rc-config-loader: 4.1.3 + semver: 7.7.1 + semver-diff: 3.1.1 + strip-ansi: 6.0.1 + text-table: 0.2.0 + throat: 6.0.2 + update-notifier: 5.1.0 + xtend: 4.0.2 + transitivePeerDependencies: + - supports-color + + npm-conf@1.1.3: + dependencies: + config-chain: 1.1.13 + pify: 3.0.0 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + num2fraction@1.2.2: {} + + nwsapi@2.2.18: {} + + oauth-sign@0.9.0: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + obuf@1.1.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + opener@1.5.2: {} + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-tmpdir@1.0.2: {} + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-cancelable@0.4.1: {} + + p-cancelable@1.1.0: {} + + p-event@2.3.1: + dependencies: + p-timeout: 2.0.1 + + p-finally@1.0.0: {} + + p-is-promise@1.1.0: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + p-timeout@2.0.1: + dependencies: + p-finally: 1.0.0 + + p-try@2.2.0: {} + + package-json@6.5.0: + dependencies: + got: 9.6.0 + registry-auth-token: 4.2.2 + registry-url: 5.1.0 + semver: 6.3.1 + + param-case@2.1.1: + dependencies: + no-case: 2.3.2 + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-node-version@1.0.1: {} + + parse-passwd@1.0.0: {} + + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + + parse5@5.1.1: {} + + parse5@6.0.1: {} + + parse5@7.2.1: + dependencies: + entities: 4.5.0 + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + path-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 6.0.2 + + path-to-regexp@0.1.12: {} + + path-to-regexp@3.3.0: {} + + path-to-regexp@6.3.0: {} + + path-type@4.0.0: {} + + pend@1.2.0: {} + + performance-now@2.1.0: {} + + picocolors@0.2.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pify@2.3.0: {} + + pify@3.0.0: {} + + pify@4.0.1: {} + + pinkie-promise@2.0.1: + dependencies: + pinkie: 2.0.4 + + pinkie@2.0.4: {} + + pirates@4.0.6: {} + + pkg-dir@3.0.0: + dependencies: + find-up: 3.0.0 + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-dir@5.0.0: + dependencies: + find-up: 5.0.0 + + platform@1.3.6: {} + + please-upgrade-node@3.2.0: + dependencies: + semver-compare: 1.0.0 + + possible-typed-array-names@1.1.0: {} + + postcss-calc@8.2.4(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-colormin@5.3.1(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-convert-values@5.1.3(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@5.1.2(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-discard-duplicates@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-discard-empty@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-discard-overridden@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-html-transform@3.6.31(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-import@14.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-loader@7.3.4(postcss@8.5.3)(typescript@5.8.2)(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + cosmiconfig: 8.3.6(typescript@5.8.2) + jiti: 1.21.7 + postcss: 8.5.3 + semver: 7.7.1 + webpack: 5.78.0(@swc/core@1.3.96) + transitivePeerDependencies: + - typescript + + postcss-media-query-parser@0.2.3: {} + + postcss-merge-longhand@5.1.7(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.5.3) + + postcss-merge-rules@5.1.4(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-minify-font-values@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@5.1.1(postcss@8.5.3): + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-minify-params@5.1.4(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@5.2.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-modules-extract-imports@3.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.3): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-modules-values@4.0.0(postcss@8.5.3): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + + postcss-normalize-charset@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-normalize-display-values@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@5.1.1(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@5.1.0(postcss@8.5.3): + dependencies: + normalize-url: 6.1.0 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@5.1.3(postcss@8.5.3): + dependencies: + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-plugin-constparse@3.6.31(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-pxtransform@3.6.31(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-reduce-initial@5.1.2(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + postcss: 8.5.3 + + postcss-reduce-transforms@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-resolve-nested-selector@0.1.6: {} + + postcss-safe-parser@6.0.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + + postcss-unique-selectors@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-url@10.1.3(postcss@8.5.3): + dependencies: + make-dir: 3.1.0 + mime: 2.5.2 + minimatch: 3.0.8 + postcss: 8.5.3 + xxhashjs: 0.2.2 + + postcss-value-parser@4.2.0: {} + + postcss@7.0.39: + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + + postcss@8.5.3: + dependencies: + nanoid: 3.3.10 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + preferred-pm@3.1.4: + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.2.0 + + prelude-ls@1.2.1: {} + + prepend-http@2.0.0: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@2.8.8: + optional: true + + prettier@3.5.3: {} + + pretty-bytes@5.6.0: {} + + pretty-error@4.0.0: + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + + pretty-format@26.6.2: + dependencies: + '@jest/types': 26.6.2 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 17.0.2 + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + pretty-time@1.1.0: {} + + process-nextick-args@2.0.1: {} + + promise-polyfill@7.1.2: {} + + promise@8.3.0: + dependencies: + asap: 2.0.6 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-expr@2.0.6: {} + + proto-list@1.2.4: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-from-env@1.1.0: {} + + prr@1.0.1: + optional: true + + pseudomap@1.0.2: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@2.3.1: {} + + pupa@2.1.1: + dependencies: + escape-goat: 2.1.1 + + pure-rand@6.1.0: {} + + qs@6.13.0: + dependencies: + side-channel: 1.1.0 + + qs@6.5.3: {} + + query-string@5.1.1: + dependencies: + decode-uri-component: 0.2.2 + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + + query-string@7.1.3: + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + quick-lru@4.0.1: {} + + raf@3.4.1: + dependencies: + performance-now: 2.1.0 + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + rc-config-loader@4.1.3: + dependencies: + debug: 4.4.0 + js-yaml: 4.1.0 + json5: 2.2.3 + require-from-string: 2.0.2 + transitivePeerDependencies: + - supports-color + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-is@18.3.1: {} + + react-reconciler@0.27.0(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.21.0 + + react-redux@8.1.3(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1): + dependencies: + '@babel/runtime': 7.26.10 + '@types/hoist-non-react-statics': 3.3.6 + '@types/use-sync-external-store': 0.0.3 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + react-is: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.18 + react-dom: 18.3.1(react@18.3.1) + redux: 4.2.1 + + react-refresh@0.11.0: {} + + react-refresh@0.4.3: {} + + react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.10 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + redux-logger@3.0.6: + dependencies: + deep-diff: 0.3.8 + + redux-thunk@3.1.0(redux@4.2.1): + dependencies: + redux: 4.2.1 + + redux@4.2.1: + dependencies: + '@babel/runtime': 7.26.10 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.11.1: {} + + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.26.10 + + regex-parser@2.3.1: {} + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + regexpu-core@6.2.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + + registry-auth-token@4.2.2: + dependencies: + rc: 1.2.8 + + registry-url@5.1.0: + dependencies: + rc: 1.2.8 + + regjsgen@0.8.0: {} + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + + relateurl@0.2.7: {} + + renderkid@3.0.0: + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + + request@2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + 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.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + require-package-name@2.0.1: {} + + requires-port@1.0.0: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pathname@3.0.0: {} + + resolve-url-loader@5.0.0: + dependencies: + adjust-sourcemap-loader: 4.0.0 + convert-source-map: 1.9.0 + loader-utils: 2.0.4 + postcss: 8.5.3 + source-map: 0.6.1 + + resolve.exports@2.0.3: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@1.0.2: + dependencies: + lowercase-keys: 1.0.1 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.13.1: {} + + reusify@1.1.0: {} + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rrweb-cssom@0.6.0: {} + + run-async@2.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + runes2@1.1.4: {} + + rxjs@6.6.7: + dependencies: + tslib: 1.14.1 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safer-buffer@2.1.2: {} + + sass-loader@12.4.0(sass@1.50.0)(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + klona: 2.0.6 + neo-async: 2.6.2 + webpack: 5.78.0(@swc/core@1.3.96) + optionalDependencies: + sass: 1.50.0 + + sass@1.50.0: + dependencies: + chokidar: 3.6.0 + immutable: 4.3.7 + source-map-js: 1.2.1 + + sax@1.2.4: {} + + sax@1.4.1: {} + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.21.0: + dependencies: + loose-envify: 1.4.0 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + schema-utils@2.7.1: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + scss-bundle@3.1.2: + dependencies: + '@types/archy': 0.0.31 + '@types/debug': 4.1.12 + '@types/fs-extra': 8.1.5 + '@types/glob': 7.2.0 + '@types/lodash.debounce': 4.0.9 + '@types/sass': 1.45.0 + archy: 1.0.0 + chalk: 3.0.0 + chokidar: 3.6.0 + commander: 4.1.1 + fs-extra: 8.1.0 + globs: 0.1.4 + lodash.debounce: 4.0.8 + loglevel: 1.9.2 + loglevel-plugin-prefix: 0.8.4 + pretty-bytes: 5.6.0 + sass: 1.50.0 + tslib: 1.14.1 + + seek-bzip@1.0.6: + dependencies: + commander: 2.20.3 + + select-hose@2.0.0: {} + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + + semver-compare@1.0.0: {} + + semver-diff@3.1.1: + dependencies: + semver: 6.3.1 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.1: {} + + send@0.19.0: + 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 + transitivePeerDependencies: + - supports-color + + sentence-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case-first: 2.0.2 + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-index@1.9.1: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + setprototypeof@1.1.0: {} + + setprototypeof@1.2.0: {} + + shallow-clone@3.0.1: + dependencies: + kind-of: 6.0.3 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.1 + totalist: 3.0.1 + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slash@4.0.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + sockjs@0.3.24: + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + + sort-keys-length@1.0.1: + dependencies: + sort-keys: 1.1.2 + + sort-keys@1.1.2: + dependencies: + is-plain-obj: 1.1.0 + + sort-keys@2.0.0: + dependencies: + is-plain-obj: 1.1.0 + + source-list-map@2.0.1: {} + + source-map-js@1.2.1: {} + + source-map-resolve@0.6.0: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.21 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-license-ids@3.0.21: {} + + spdy-transport@3.0.0: + dependencies: + debug: 4.4.0 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + spdy@4.0.2: + dependencies: + debug: 4.4.0 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + + split-on-first@1.1.0: {} + + sprintf-js@1.0.3: {} + + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + + ssr-window@3.0.0: {} + + stable@0.1.8: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + stackframe@1.3.4: {} + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + std-env@3.8.1: {} + + strict-uri-encode@1.1.0: {} + + strict-uri-encode@2.0.0: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.fromcodepoint@0.2.1: {} + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.9 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@3.0.0: {} + + strip-bom@4.0.0: {} + + strip-dirs@2.1.0: + dependencies: + is-natural-number: 4.0.1 + + strip-final-newline@2.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@2.0.1: {} + + strip-json-comments@3.1.1: {} + + strip-outer@1.0.1: + dependencies: + escape-string-regexp: 1.0.5 + + style-loader@3.3.1(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + webpack: 5.78.0(@swc/core@1.3.96) + + style-search@0.1.0: {} + + stylehacks@5.1.1(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + stylelint@14.16.1: + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2) + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 7.1.0 + css-functions-list: 3.2.3 + debug: 4.4.0 + fast-glob: 3.3.3 + fastest-levenshtein: 1.0.16 + file-entry-cache: 6.0.1 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 5.3.2 + import-lazy: 4.0.0 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.26.0 + mathml-tag-names: 2.1.3 + meow: 9.0.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.3 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 6.0.0(postcss@8.5.3) + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + style-search: 0.1.0 + supports-hyperlinks: 2.3.0 + svg-tags: 1.0.0 + table: 6.9.0 + v8-compile-cache: 2.4.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + stylus-loader@6.2.0(stylus@0.55.0)(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + fast-glob: 3.3.3 + klona: 2.0.6 + normalize-path: 3.0.0 + stylus: 0.55.0 + webpack: 5.78.0(@swc/core@1.3.96) + + stylus@0.55.0: + dependencies: + css: 3.0.0 + debug: 3.1.0 + glob: 7.2.3 + mkdirp: 1.0.4 + safer-buffer: 2.1.2 + sax: 1.2.4 + semver: 6.3.1 + source-map: 0.7.4 + transitivePeerDependencies: + - supports-color + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-tags@1.0.0: {} + + svgo@2.8.0: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.1.1 + stable: 0.1.8 + + swiper@6.8.0: + dependencies: + dom7: 3.0.0 + ssr-window: 3.0.0 + + symbol-tree@3.2.4: {} + + synckit@0.9.2: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.8.1 + + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tapable@1.1.3: {} + + tapable@2.2.1: {} + + tar-stream@1.6.2: + dependencies: + bl: 1.2.3 + buffer-alloc: 1.2.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + readable-stream: 2.3.8 + to-buffer: 1.1.1 + xtend: 4.0.2 + + terser-webpack-plugin@5.3.14(@swc/core@1.3.96)(esbuild@0.19.12)(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 4.3.0 + serialize-javascript: 6.0.2 + terser: 5.39.0 + webpack: 5.78.0(@swc/core@1.3.96) + optionalDependencies: + '@swc/core': 1.3.96 + esbuild: 0.19.12 + + terser@5.39.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + throat@6.0.2: {} + + through@2.3.8: {} + + thunky@1.1.0: {} + + timed-out@4.0.1: {} + + tiny-case@1.0.3: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + tmpl@1.0.5: {} + + to-buffer@1.1.1: {} + + to-readable-stream@1.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + toposort@2.0.2: {} + + totalist@3.0.1: {} + + tough-cookie@2.5.0: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@3.0.0: + dependencies: + punycode: 2.3.1 + + tr46@4.1.1: + dependencies: + punycode: 2.3.1 + + trim-newlines@3.0.1: {} + + trim-repeated@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + ts-api-utils@1.4.3(typescript@5.8.2): + dependencies: + typescript: 5.8.2 + + ts-node@10.9.2(@swc/core@1.3.96)(@types/node@18.19.80)(typescript@5.8.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.19.80 + acorn: 8.14.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.3.96 + + tsconfig-paths-webpack-plugin@4.2.0: + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.18.1 + tapable: 2.2.1 + tsconfig-paths: 4.2.0 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@1.14.1: {} + + tslib@2.8.1: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tweetnacl@0.14.5: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.18.1: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-fest@2.19.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typescript@5.8.2: {} + + uglify-js@3.19.3: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + + undici-types@5.26.5: {} + + unescape-js@1.1.4: + dependencies: + string.fromcodepoint: 0.2.1 + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + unique-string@2.0.0: + dependencies: + crypto-random-string: 2.0.0 + + universal-router@8.3.0: + dependencies: + path-to-regexp: 3.3.0 + + universalify@0.1.2: {} + + universalify@0.2.0: {} + + unpipe@1.0.0: {} + + update-browserslist-db@1.1.3(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + update-notifier@5.1.0: + dependencies: + boxen: 5.1.2 + chalk: 4.1.2 + configstore: 5.0.1 + has-yarn: 2.1.0 + import-lazy: 2.1.0 + is-ci: 2.0.0 + is-installed-globally: 0.4.0 + is-npm: 5.0.0 + is-yarn-global: 0.3.0 + latest-version: 5.1.0 + pupa: 2.1.1 + semver: 7.7.1 + semver-diff: 3.1.1 + xdg-basedir: 4.0.0 + + upper-case-first@2.0.2: + dependencies: + tslib: 2.8.1 + + upper-case@1.1.3: {} + + upper-case@2.0.2: + dependencies: + tslib: 2.8.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-loader@4.1.0(file-loader@6.0.0(webpack@5.78.0(@swc/core@1.3.96)))(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + loader-utils: 2.0.4 + mime-types: 2.1.35 + schema-utils: 2.7.1 + webpack: 5.78.0(@swc/core@1.3.96) + optionalDependencies: + file-loader: 6.0.0(webpack@5.78.0(@swc/core@1.3.96)) + + url-parse-lax@3.0.0: + dependencies: + prepend-http: 2.0.0 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + url-to-options@1.0.1: {} + + use-sync-external-store@1.4.0(react@18.3.1): + dependencies: + react: 18.3.1 + + util-deprecate@1.0.2: {} + + utila@0.4.0: {} + + utils-merge@1.0.1: {} + + uuid@3.4.0: {} + + uuid@8.3.2: {} + + v8-compile-cache-lib@3.0.1: {} + + v8-compile-cache@2.4.0: {} + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate-npm-package-name@5.0.1: {} + + vary@1.1.2: {} + + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + + vm2@3.9.19: + dependencies: + acorn: 8.14.1 + acorn-walk: 8.3.4 + + vue-hot-reload-api@2.3.4: {} + + vue-loader@15.11.1(@vue/compiler-sfc@3.5.13)(css-loader@6.11.0(webpack@5.78.0(@swc/core@1.3.96)))(lodash@4.17.21)(prettier@3.5.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + '@vue/component-compiler-utils': 3.3.0(lodash@4.17.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + css-loader: 6.11.0(webpack@5.78.0(@swc/core@1.3.96)) + hash-sum: 1.0.2 + loader-utils: 1.4.2 + vue-hot-reload-api: 2.3.4 + vue-style-loader: 4.1.3 + webpack: 5.78.0(@swc/core@1.3.96) + optionalDependencies: + '@vue/compiler-sfc': 3.5.13 + prettier: 3.5.3 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + + vue-style-loader@4.1.3: + dependencies: + hash-sum: 1.0.2 + loader-utils: 1.4.2 + + vue-template-es2015-compiler@1.9.1: {} + + w3c-xmlserializer@4.0.0: + dependencies: + xml-name-validator: 4.0.0 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + watchpack@2.4.2: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webidl-conversions@7.0.0: {} + + webpack-bundle-analyzer@4.10.2: + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.14.1 + acorn-walk: 8.3.4 + commander: 7.2.0 + debounce: 1.2.1 + escape-string-regexp: 4.0.0 + gzip-size: 6.0.0 + html-escaper: 2.0.2 + opener: 1.5.2 + picocolors: 1.1.1 + sirv: 2.0.4 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + webpack-chain@6.5.1: + dependencies: + deepmerge: 1.5.2 + javascript-stringify: 2.1.0 + + webpack-dev-middleware@5.3.4(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.3.0 + webpack: 5.78.0(@swc/core@1.3.96) + + webpack-dev-server@4.11.1(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.7 + '@types/sockjs': 0.3.36 + '@types/ws': 8.18.0 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.0 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.21.2 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 2.0.7(@types/express@4.17.21) + ipaddr.js: 2.2.0 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.3.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.78.0(@swc/core@1.3.96) + webpack-dev-middleware: 5.3.4(webpack@5.78.0(@swc/core@1.3.96)) + ws: 8.18.1 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-format-messages@2.0.6: + dependencies: + kleur: 3.0.3 + + webpack-merge@4.2.2: + dependencies: + lodash: 4.17.21 + + webpack-sources@2.3.1: + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + + webpack-sources@3.2.3: {} + + webpack-virtual-modules@0.5.0: {} + + webpack@5.78.0(@swc/core@1.3.96): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 0.0.51 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/wasm-edit': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + acorn: 8.14.1 + acorn-import-assertions: 1.9.0(acorn@8.14.1) + browserslist: 4.24.4 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.1 + es-module-lexer: 0.9.3 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.14(@swc/core@1.3.96)(esbuild@0.19.12)(webpack@5.78.0(@swc/core@1.3.96)) + watchpack: 2.4.2 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpackbar@5.0.2(webpack@5.78.0(@swc/core@1.3.96)): + dependencies: + chalk: 4.1.2 + consola: 2.15.3 + pretty-time: 1.1.0 + std-env: 3.8.1 + webpack: 5.78.0(@swc/core@1.3.96) + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.9 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + whatwg-encoding@2.0.0: + dependencies: + iconv-lite: 0.6.3 + + whatwg-fetch@3.6.20: {} + + whatwg-mimetype@3.0.0: {} + + whatwg-url@11.0.0: + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + + whatwg-url@12.0.1: + dependencies: + tr46: 4.1.1 + webidl-conversions: 7.0.0 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-pm@2.2.0: + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + + word-wrap@1.2.5: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@7.5.10: {} + + ws@8.18.1: {} + + xdg-basedir@4.0.0: {} + + xml-name-validator@4.0.0: {} + + xml2js@0.5.0: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlchars@2.2.0: {} + + xtend@4.0.2: {} + + xxhashjs@0.2.2: + dependencies: + cuint: 0.2.2 + + y18n@5.0.8: {} + + yallist@2.1.2: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@1.10.2: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + yup@1.6.1: + dependencies: + property-expr: 2.0.6 + tiny-case: 1.0.3 + toposort: 2.0.2 + type-fest: 2.19.0 diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..f97071f --- /dev/null +++ b/project.config.json @@ -0,0 +1,34 @@ +{ + "miniprogramRoot": "dist/", + "description": "boluo app", + "setting": { + "urlCheck": true, + "es6": false, + "enhance": false, + "compileHotReLoad": false, + "postcss": false, + "minified": true, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "coverView": false, + "showShadowRootInWxmlPanel": false, + "packNpmRelationList": [], + "ignoreUploadUnusedFiles": true + }, + "compileType": "miniprogram", + "srcMiniprogramRoot": "dist/", + "condition": {}, + "editorSetting": { + "tabIndent": "insertSpaces", + "tabSize": 2 + }, + "libVersion": "3.4.6", + "packOptions": { + "ignore": [], + "include": [] + }, + "appid": "wxf0724a83f8e377d2" +} \ No newline at end of file diff --git a/project.tt.json b/project.tt.json new file mode 100644 index 0000000..32a43a7 --- /dev/null +++ b/project.tt.json @@ -0,0 +1,9 @@ +{ + "miniprogramRoot": "./", + "projectname": "boluo-app", + "appid": "testAppId", + "setting": { + "es6": false, + "minified": false + } +} diff --git a/src/app.config.ts b/src/app.config.ts new file mode 100644 index 0000000..a3612a2 --- /dev/null +++ b/src/app.config.ts @@ -0,0 +1,3 @@ +import { APP_CONFIG } from './hooks/use-config'; + +export default defineAppConfig(APP_CONFIG); diff --git a/src/app.less b/src/app.less new file mode 100644 index 0000000..6ba43b7 --- /dev/null +++ b/src/app.less @@ -0,0 +1,15 @@ +@import '@/styles/variables.less'; + +.base-bg { + background: @pageBg; +} + +page { + .base-bg(); + // 全部覆盖 taroify tabs 的背景色 + --tabs-nav-background-color: @pageBg; + + .taroify-tabs__wrap__scroll { + .base-bg(); + } +} \ No newline at end of file diff --git a/src/app.tsx b/src/app.tsx new file mode 100644 index 0000000..4c2be8c --- /dev/null +++ b/src/app.tsx @@ -0,0 +1,29 @@ +import { useLaunch } from '@tarojs/taro'; + +import { PropsWithChildren } from 'react'; +import { Provider } from 'react-redux'; + +import { REFRESH_UNREAD_COUNT_TIME } from '@/constants/message'; +import http from '@/http'; +import store from '@/store'; +import { requestUnreadMessageCount } from '@/utils/message'; +import qiniuUpload from '@/utils/qiniu-upload'; +import { requestUserInfo, updateLastLoginTime } from '@/utils/user'; + +import './app.less'; + +function App({ children }: PropsWithChildren) { + useLaunch(async () => { + console.log('App launched.'); + await http.init(); + requestUserInfo(); + updateLastLoginTime(); + qiniuUpload.init(); + requestUnreadMessageCount(); + setInterval(() => requestUnreadMessageCount(), REFRESH_UNREAD_COUNT_TIME); + }); + + return {children}; +} + +export default App; diff --git a/src/components/anchor-card/index.less b/src/components/anchor-card/index.less new file mode 100644 index 0000000..170d757 --- /dev/null +++ b/src/components/anchor-card/index.less @@ -0,0 +1,123 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.anchor-card { + width: 100%; + .flex-row(); + align-items: flex-start; + padding: 24px; + box-sizing: border-box; + background: #FFFFFF; + + .color(@defaultColor) { + color: var(--read-color, @defaultColor); + } + + &__cover { + position: relative; + width: 188px; + min-width: 188px; + max-width: 188px; + height: 242px; + min-height: 242px; + max-height: 242px; + border-radius: 12px; + } + + &__cover-skeleton { + position: absolute; + border-radius: 12px; + } + + &__info-container { + height: 100%; + flex: 1; + .flex-row(); + align-items: flex-start; + margin-left: 24px; + } + + &__info { + height: 100%; + flex: 1; + .flex-column(); + align-items: flex-start; + margin-right: 10px; + + &__title { + font-size: 32px; + line-height: 32px; + font-weight: 500; + .color(@blColor); + } + + @maxTextWidth: 49vw; + + &__basic { + max-width: @maxTextWidth; + font-size: 24px; + line-height: 36px; + font-weight: 400; + .color(@blColorG2); + margin-top: 16px; + .noWrap(); + } + + &__categories { + max-width: @maxTextWidth; + font-size: 24px; + line-height: 36px; + font-weight: 400; + .color(@blColorG2); + margin-top: 12px; + .noWrap(); + } + + &__year { + max-width: @maxTextWidth; + font-size: 24px; + line-height: 36px; + font-weight: 400; + .color(@blColorG2); + margin-top: 12px; + .noWrap(); + } + + &__salary { + max-width: @maxTextWidth; + font-size: 28px; + line-height: 40px; + font-weight: 500; + .color(@blHighlightColor); + margin-top: 20px; + .noWrap(); + } + } + + &__right { + height: 242px; + .flex-column(); + justify-content: space-between; + font-size: 24px; + line-height: 32px; + font-weight: 400; + .color(@blColorG1); + } + + &__distance-wrapper { + .flex-row(); + } + + &__distance-icon { + width: 28px; + height: 28px; + margin-right: 6px; + } + + &__distance { + font-size: 24px; + line-height: 40px; + font-weight: 400; + .color(@blColorG1); + } +} \ No newline at end of file diff --git a/src/components/anchor-card/index.tsx b/src/components/anchor-card/index.tsx new file mode 100644 index 0000000..7ee500c --- /dev/null +++ b/src/components/anchor-card/index.tsx @@ -0,0 +1,82 @@ +import { Image as TaroImage } from '@tarojs/components'; + +import { Image } from '@taroify/core'; +import { PhotoFail } from '@taroify/icons'; +import { useCallback } from 'react'; + +import SkeletonLoading from '@/components/skeleton-loading'; +import { PageUrl } from '@/constants/app'; +import { MaterialViewSource, WORK_YEAR_LABELS } from '@/constants/material'; +import { AnchorInfo } from '@/types/material'; +import { calcDistance } from '@/utils/location'; +import { getBasicInfo } from '@/utils/material'; +import { navigateTo } from '@/utils/route'; +import { activeDate } from '@/utils/time'; + +import './index.less'; + +interface IProps { + data: AnchorInfo; + jobId?: string; +} + +const PREFIX = 'anchor-card'; +const getSalary = (data: AnchorInfo) => { + const { fullTimeMinPrice, fullTimeMaxPrice, partyTimeMinPrice, partyTimeMaxPrice } = data; + const prices: string[] = []; + if (fullTimeMinPrice && fullTimeMaxPrice) { + prices.push(`${fullTimeMinPrice / 1000}-${fullTimeMaxPrice / 1000}K/月`); + } + if (partyTimeMinPrice && partyTimeMaxPrice) { + prices.push(`${partyTimeMinPrice}-${partyTimeMaxPrice}/小时`); + } + return prices.filter(Boolean).join(' '); +}; + +function AnchorCard(props: IProps) { + const { data, jobId } = props; + const style = data.isRead ? ({ '--read-color': '#999999' } as React.CSSProperties) : {}; + const cover = (data.materialVideoInfoList.find(video => video.isDefault) || data.materialVideoInfoList[0])?.coverUrl; + + const handleClick = useCallback( + () => navigateTo(PageUrl.MaterialView, { jobId, resumeId: data.id, source: MaterialViewSource.AnchorList }), + [data, jobId] + ); + + return ( +
+ } + className={`${PREFIX}__cover`} + placeholder={} + /> +
+
+
{data.name}
+
{getBasicInfo(data)}
+
{WORK_YEAR_LABELS[data.workedYear] || ''}
+ {data.workedSecCategoryStr && ( +
{`播过 ${data.workedSecCategoryStr}`}
+ )} +
{getSalary(data)}
+
+
+
{activeDate(data.sortTime)}
+ {typeof data.distance !== 'undefined' && ( +
+ +
{calcDistance(data.distance, 1)}
+
+ )} +
+
+
+ ); +} + +export default AnchorCard; diff --git a/src/components/anchor-list/index.less b/src/components/anchor-list/index.less new file mode 100644 index 0000000..e69de29 diff --git a/src/components/anchor-list/index.tsx b/src/components/anchor-list/index.tsx new file mode 100644 index 0000000..d459f41 --- /dev/null +++ b/src/components/anchor-list/index.tsx @@ -0,0 +1,209 @@ +import Taro from '@tarojs/taro'; + +import { List, PullRefresh } from '@taroify/core'; +import classNames from 'classnames'; +import { isEqual } from 'lodash-es'; +import { useCallback, useEffect, useRef, useState } from 'react'; + +import AnchorCard from '@/components/anchor-card'; +import ListPlaceholder from '@/components/list-placeholder'; +import { EventName } from '@/constants/app'; +import { AnchorSortType } from '@/constants/material'; +import { AnchorInfo, GetAnchorListRequest, IAnchorFilters } from '@/types/material'; +import { logWithPrefix } from '@/utils/common'; +import { requestAnchorList as requestData } from '@/utils/material'; + +import './index.less'; + +interface IRequestProps extends Partial { + filters?: IAnchorFilters; +} + +export interface IAnchorListProps extends IRequestProps { + ready?: boolean; + refreshDisabled?: boolean; + listHeight?: number; + className?: string; + onListEmpty?: () => void; +} + +const FIRST_PAGE = 0; +const PAGE_SIZE = 10; +const PREFIX = 'anchor-list'; +const log = logWithPrefix(PREFIX); + +function AnchorList(props: IAnchorListProps) { + const { + className, + listHeight, + refreshDisabled, + jobId, + filters, + cityCode = 'ALL', + sortType = AnchorSortType.Recommend, + latitude, + longitude, + ready, + onListEmpty, + } = props; + const [refreshing, setRefreshing] = useState(false); + const [hasMore, setHasMore] = useState(true); + const [loadingMore, setLoadingMore] = useState(false); + const [loadMoreError, setLoadMoreError] = useState(false); + const [dataList, setDataList] = useState([]); + const currentPage = useRef(FIRST_PAGE); + const requestProps = useRef({}); + const prevRequestProps = useRef({}); + const onListEmptyRef = useRef(onListEmpty); + + const handleRefresh = useCallback(async () => { + log('start pull refresh'); + try { + setRefreshing(true); + setLoadMoreError(false); + const { page, hasMore: more, data: anchorResults } = await requestData({ ...requestProps.current, page: 1 }); + setHasMore(more); + setDataList(anchorResults); + currentPage.current = page; + !anchorResults.length && onListEmptyRef.current?.(); + log('pull refresh success'); + } catch (e) { + setDataList([]); + setHasMore(false); + setLoadMoreError(true); + currentPage.current = FIRST_PAGE; + log('pull refresh failed'); + } finally { + setRefreshing(false); + } + }, []); + + const handleLoadMore = useCallback(async () => { + log('start load more', hasMore); + if (!hasMore) { + return; + } + setLoadMoreError(false); + setLoadingMore(true); + try { + const { + page, + hasMore: more, + data: anchorResults, + } = await requestData({ ...requestProps.current, page: currentPage.current + 1 }); + setDataList([...dataList, ...anchorResults]); + setHasMore(more); + currentPage.current = page; + log('load more success'); + } catch (e) { + setLoadMoreError(true); + log('load more failed'); + } finally { + setLoadingMore(false); + } + }, [dataList, hasMore]); + + const handleReadMaterial = useCallback( + (materialId: string) => { + const index = dataList.findIndex(d => String(d.id) === materialId); + if (index < 0) { + return; + } + const material = dataList[index]; + if (!material || material.isRead) { + return; + } + log('auto mark read', materialId); + dataList.splice(index, 1, { ...material, isRead: true }); + setDataList([...dataList]); + }, + [dataList] + ); + + useEffect(() => { + onListEmptyRef.current = onListEmpty; + }, [onListEmpty]); + + useEffect(() => { + log('request params changed'); + requestProps.current = { + ...filters, + jobId, + cityCode, + sortType, + latitude, + longitude, + pageSize: PAGE_SIZE, + }; + }, [jobId, filters, cityCode, sortType, latitude, longitude]); + + useEffect(() => { + Taro.eventCenter.on(EventName.VIEW_MATERIAL_SUCCESS, handleReadMaterial); + return () => { + Taro.eventCenter.off(EventName.VIEW_MATERIAL_SUCCESS, handleReadMaterial); + }; + }, [handleReadMaterial]); + + // 初始化数据&配置变更后刷新数据 + useEffect(() => { + // 相比前一次可见时没有数据变更时,不再重新请求 + if (isEqual(prevRequestProps.current, requestProps.current)) { + log('visible/city changed, but request params not change, ignore'); + return; + } + // 列表不可见时,先不做处理 + if (!ready) { + log('visible/city changed, but is not ready, only refresh list'); + return; + } + + prevRequestProps.current = requestProps.current; + const refresh = async () => { + log('visible/city changed, start refresh list data'); + try { + setDataList([]); + setLoadingMore(true); + setLoadMoreError(false); + const { page, hasMore: more, data: anchorResults } = await requestData({ ...requestProps.current, page: 1 }); + setHasMore(more); + setDataList(anchorResults); + currentPage.current = page; + !anchorResults.length && onListEmptyRef.current?.(); + } catch (e) { + setDataList([]); + setHasMore(false); + setLoadMoreError(true); + currentPage.current = FIRST_PAGE; + } finally { + log('visible/city changed, refresh list data end'); + setLoadingMore(false); + } + }; + refresh(); + }, [jobId, ready, filters, cityCode, sortType]); + + return ( + + + {dataList.map(item => ( + + ))} + + + + ); +} + +export default AnchorList; diff --git a/src/components/anchor-picker/index.less b/src/components/anchor-picker/index.less new file mode 100644 index 0000000..ac1cd44 --- /dev/null +++ b/src/components/anchor-picker/index.less @@ -0,0 +1,69 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.anchor-picker { + width: 100%; + background: #FFFFFF; + padding: 24px; + + &__title { + font-size: 28px; + line-height: 40px; + font-weight: 400; + color: @blColor; + margin-top: 32px; + + &:first-child { + margin-top: 0; + } + } + + &__container { + .flex-row(); + flex-wrap: wrap; + margin-top: 16px; + } + + &__item { + min-width: 164px; + height: 64px; + font-size: 28px; + line-height: 64px; + font-weight: 400; + text-align: center; + color: @blColor; + background: #F6F6F6; + margin-left: 16px; + border-radius: 32px; + + &:first-child { + margin-left: 0; + } + + &.selected { + color: @blHighlightColor; + background: @blHighlightBg; + } + } + + &__input { + width: 344px; + height: 72px; + font-size: 28px; + line-height: 72px; + font-weight: 400; + color: @blColor; + background: #F6F6F6; + padding: 0 24px; + margin-top: 16px; + border-radius: 12px; + } + + &__input-placeholder { + color: @blColorG1; + } + + &__toolbar { + margin-top: 20px; + } +} \ No newline at end of file diff --git a/src/components/anchor-picker/index.tsx b/src/components/anchor-picker/index.tsx new file mode 100644 index 0000000..604967d --- /dev/null +++ b/src/components/anchor-picker/index.tsx @@ -0,0 +1,186 @@ +import { BaseEventOrig, Input, InputProps } from '@tarojs/components'; + +import classNames from 'classnames'; +import { isEqual } from 'lodash-es'; +import { useCallback, useState } from 'react'; + +import PickerToolbar from '@/components/picker-toolbar'; +import { + EmployType, + ALL_EMPLOY_TYPES, + FULL_PRICE_OPTIONS, + PART_PRICE_OPTIONS, + EMPLOY_TYPE_TITLE_MAP, +} from '@/constants/job'; +import { + ALL_ANCHOR_READ_TYPES, + ALL_GENDER_TYPES, + ANCHOR_READ_TITLE_MAP, + AnchorReadType, + GENDER_TYPE_TITLE_MAP, + GenderType, +} from '@/constants/material'; +import { IAnchorFilters } from '@/types/material'; +import { isUndefined } from '@/utils/common'; + +import './index.less'; + +interface IProps { + value: IAnchorFilters; + onConfirm: (newValue: IAnchorFilters) => void; +} + +const PREFIX = 'anchor-picker'; +const getDefaultGender = (value: IAnchorFilters) => value.gender; +const getDefaultEmploy = (value: IAnchorFilters) => value.employType; +const getDefaultReadType = (value: IAnchorFilters) => value.readType; +const getDefaultCategory = (value: IAnchorFilters) => value.category || ''; +const getSalaryValue = (value: IAnchorFilters, full: boolean) => { + const min = full ? value.lowPriceForFullTime : value.lowPriceForPartyTime; + const max = full ? value.highPriceForFullTime : value.highPriceForPartyTime; + if (!min || !max) { + return null; + } + const options = full ? FULL_PRICE_OPTIONS : PART_PRICE_OPTIONS; + return options.find(v => v.value && v.value.minSalary <= min && v.value.maxSalary >= max)?.value; +}; + +function AnchorPicker(props: IProps) { + const { value, onConfirm } = props; + const [gender, setGender] = useState(getDefaultGender(value)); + const [readType, setReadType] = useState(getDefaultReadType(value)); + const [employType, setEmployType] = useState(getDefaultEmploy(value)); + const [fullSalary, setFullSalary] = useState(getSalaryValue(value, true)); + const [partSalary, setPartSalary] = useState(getSalaryValue(value, false)); + const [category, setCategory] = useState(getDefaultCategory(value)); + + const handleInputCategory = useCallback((e: BaseEventOrig) => { + setCategory(e.detail.value || ''); + }, []); + + const handleClickReset = useCallback(() => { + setGender(undefined); + setReadType(undefined); + setEmployType(undefined); + setFullSalary(null); + setPartSalary(null); + setCategory(''); + }, []); + + const handleSelectFull = useCallback( + (newSalary?: { minSalary: number; maxSalary: number }) => { + setFullSalary(newSalary === fullSalary ? null : newSalary); + }, + [fullSalary] + ); + + const handleSelectPart = useCallback( + (newSalary?: { minSalary: number; maxSalary: number }) => { + setPartSalary(newSalary === partSalary ? null : newSalary); + }, + [partSalary] + ); + + const handleClickConfirm = useCallback(() => { + const filters: IAnchorFilters = {}; + if (!isUndefined(gender)) { + filters.gender = gender === GenderType.All ? undefined : gender; + } + employType && (filters.employType = employType); + readType && (filters.readType = readType); + category && (filters.category = category); + if (fullSalary) { + filters.lowPriceForFullTime = fullSalary.minSalary; + filters.highPriceForFullTime = fullSalary.maxSalary; + } + if (partSalary) { + filters.lowPriceForPartyTime = partSalary.minSalary; + filters.highPriceForPartyTime = partSalary.maxSalary; + } + onConfirm(filters); + }, [gender, employType, readType, category, fullSalary, partSalary, onConfirm]); + + return ( +
+
性别
+
+ {ALL_GENDER_TYPES.map((type: GenderType) => ( +
setGender(type)} + className={classNames(`${PREFIX}__item`, { selected: type === gender })} + > + {GENDER_TYPE_TITLE_MAP[type]} +
+ ))} +
+
全职/兼职
+
+ {ALL_EMPLOY_TYPES.map(type => ( +
setEmployType(type)} + className={classNames(`${PREFIX}__item`, { selected: type === employType })} + > + {EMPLOY_TYPE_TITLE_MAP[type]} +
+ ))} +
+
已读/未读
+
+ {ALL_ANCHOR_READ_TYPES.map(type => ( +
setReadType(type)} + className={classNames(`${PREFIX}__item`, { selected: type === readType })} + > + {ANCHOR_READ_TITLE_MAP[type]} +
+ ))} +
+
全职薪资范围(每月)
+
+ {FULL_PRICE_OPTIONS.map(option => ( +
handleSelectFull(option.value)} + className={classNames(`${PREFIX}__item`, { selected: isEqual(option.value, fullSalary) })} + > + {option.label} +
+ ))} +
+
兼职薪资范围(每小时)
+
+ {PART_PRICE_OPTIONS.map(option => ( +
handleSelectPart(option.value)} + className={classNames(`${PREFIX}__item`, { selected: isEqual(option.value, partSalary) })} + > + {option.label} +
+ ))} +
+
播过的品类(模糊匹配)
+ + +
+ ); +} + +export default AnchorPicker; diff --git a/src/components/badge/index.less b/src/components/badge/index.less new file mode 100644 index 0000000..7cba03d --- /dev/null +++ b/src/components/badge/index.less @@ -0,0 +1,13 @@ +.badge { + position: absolute; + top: 0; + right: 0; + color: #FFFFFF; + background: #FF5051; + font-size: 24px; + line-height: 34px; + padding: 0 8px; + border-radius: 10px; + border-bottom-left-radius: 0; + transform: translate3d(30%, -50%, 0); +} \ No newline at end of file diff --git a/src/components/badge/index.tsx b/src/components/badge/index.tsx new file mode 100644 index 0000000..544e76f --- /dev/null +++ b/src/components/badge/index.tsx @@ -0,0 +1,16 @@ +import classNames from 'classnames'; +import './index.less'; + +interface IProps { + text: string; + className?: string; +} + +const PREFIX = 'badge'; + +function Badge(props: IProps) { + const { className, text } = props; + return
{text}
; +} + +export default Badge; diff --git a/src/components/bl-checkbox/index.less b/src/components/bl-checkbox/index.less new file mode 100644 index 0000000..12c8c53 --- /dev/null +++ b/src/components/bl-checkbox/index.less @@ -0,0 +1,21 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.profile-checkbox { + + &__group { + width: 100%; + height: 100%; + .flex-row(); + } + + &__item { + flex: 1; + height: 100%; + } + + &__icon { + width: 36px; + height: 36px; + } +} \ No newline at end of file diff --git a/src/components/bl-checkbox/index.tsx b/src/components/bl-checkbox/index.tsx new file mode 100644 index 0000000..3417585 --- /dev/null +++ b/src/components/bl-checkbox/index.tsx @@ -0,0 +1,43 @@ +import { Image } from '@tarojs/components'; + +import { Checkbox } from '@taroify/core'; +import { CheckboxProps, CheckboxGroupProps } from '@taroify/core/checkbox'; + +import './index.less'; + +interface IProps extends CheckboxProps { + text: string; + value: BL.Anything[]; +} + +interface IGroupProps extends CheckboxGroupProps {} + +const PREFIX = 'profile-checkbox'; + +export function BlCheckboxGroup(props: IGroupProps) { + return ; +} + +export function BlCheckbox(props: IProps) { + const { name, text, value } = props; + + return ( + + } + > + {text} + + ); +} diff --git a/src/components/bl-form-cell/index.less b/src/components/bl-form-cell/index.less new file mode 100644 index 0000000..82b785c --- /dev/null +++ b/src/components/bl-form-cell/index.less @@ -0,0 +1,28 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.bl-form-cell { + height: 100%; + width: 100%; + .flex-row(); + + &__text { + flex: 1; + font-size: 32px; + line-height: 32px; + color: #CCCCCC; + .noWrap(); + + &.hasText { + color: @blColor; + } + } + + &__right-icon { + .flex-row(); + height: 48px; + font-size: 32px; + line-height: 48px; + color: #969799; + } +} \ No newline at end of file diff --git a/src/components/bl-form-cell/index.tsx b/src/components/bl-form-cell/index.tsx new file mode 100644 index 0000000..0522476 --- /dev/null +++ b/src/components/bl-form-cell/index.tsx @@ -0,0 +1,25 @@ +import { ArrowRight } from '@taroify/icons'; +import classNames from 'classnames'; + +import './index.less'; + +interface IProps { + text: string; + placeholder?: string; + onClick?: () => void; +} + +const PREFIX = 'bl-form-cell'; + +function BlFormCell(props: IProps) { + const { text, placeholder, onClick } = props; + + return ( +
+
{text || placeholder}
+ +
+ ); +} + +export default BlFormCell; diff --git a/src/components/bl-form-input/index.less b/src/components/bl-form-input/index.less new file mode 100644 index 0000000..e4498cd --- /dev/null +++ b/src/components/bl-form-input/index.less @@ -0,0 +1,36 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.bl-form-input { + width: 100%; + .flex-row(); + + &__input { + height: 60px; + flex: 1; + font-size: 32px; + line-height: 60px; + color: @blColor; + } + + &__input-placeholder { + font-size: 32px; + line-height: 32px; + color: #CCCCCC; + } + + &__right-text { + font-size: 32px; + line-height: 32px; + color: @blColor; + margin-left: 10px; + } + + &__max-length-tips { + font-size: 28px; + line-height: 32px; + color: @blColorG1; + margin-left: 10px; + } + +} \ No newline at end of file diff --git a/src/components/bl-form-input/index.tsx b/src/components/bl-form-input/index.tsx new file mode 100644 index 0000000..3518068 --- /dev/null +++ b/src/components/bl-form-input/index.tsx @@ -0,0 +1,35 @@ +import { Input, InputProps } from '@tarojs/components'; + +import './index.less'; + +interface IProps extends InputProps { + rightText?: string; + maxLengthTips?: boolean; +} + +const PREFIX = 'bl-form-input'; + +function BlFormInput(props: IProps) { + const { value, maxlength = 140, maxLengthTips, rightText, onInput, ...otherProps } = props; + + return ( +
+ + {rightText &&
{rightText}
} + {maxLengthTips && maxlength && ( +
{`${(value || '').length}/${maxlength}`}
+ )} +
+ ); +} + +export default BlFormInput; diff --git a/src/components/bl-form-item/index.less b/src/components/bl-form-item/index.less new file mode 100644 index 0000000..cb33f3c --- /dev/null +++ b/src/components/bl-form-item/index.less @@ -0,0 +1,45 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.bl-form-item { + width: 100%; + margin-bottom: 40px; + + &:last-child { + margin-bottom: 0; + } + + &__header { + .flex-row(); + + &__title { + font-size: 28px; + line-height: 32px; + font-weight: 400; + color: @blColor; + } + + &__type { + font-size: 24px; + line-height: 32px; + font-weight: 400; + color: @blColorG1; + margin-left: 4px; + } + } + + &__content { + width: 100%; + height: 100px; + background: #FFFFFF; + border-radius: 16px; + .flex-row(); + margin-top: 24px; + padding: 0 32px; + box-sizing: border-box; + + &.dynamicHeight { + height: fit-content; + } + } +} \ No newline at end of file diff --git a/src/components/bl-form-item/index.tsx b/src/components/bl-form-item/index.tsx new file mode 100644 index 0000000..ea0cbb8 --- /dev/null +++ b/src/components/bl-form-item/index.tsx @@ -0,0 +1,42 @@ +import classNames from 'classnames'; +import React from 'react'; + +import './index.less'; + +interface IProps extends React.PropsWithChildren { + title: string; + subTitle?: string | boolean; + optional?: boolean; + dynamicHeight?: boolean; + className?: string; + contentClassName?: string; +} + +const PREFIX = 'bl-form-item'; + +function BlFormItem(props: IProps) { + const { + children, + className, + contentClassName, + title, + subTitle = true, + optional = false, + dynamicHeight = false, + } = props; + return ( +
+
+
{title}
+ {subTitle !== false && ( +
{`(${typeof subTitle === 'string' ? subTitle : optional ? '建议填写' : '必填'})`}
+ )} +
+
{children}
+
+ ); +} + +export default BlFormItem; diff --git a/src/components/bl-form-radio/index.less b/src/components/bl-form-radio/index.less new file mode 100644 index 0000000..6367e65 --- /dev/null +++ b/src/components/bl-form-radio/index.less @@ -0,0 +1,19 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.bl-form-radio { + + &__group { + width: 100%; + height: 100%; + } + + &__item { + flex: 1; + } + + &__icon { + width: 36px; + height: 36px; + } +} \ No newline at end of file diff --git a/src/components/bl-form-radio/index.tsx b/src/components/bl-form-radio/index.tsx new file mode 100644 index 0000000..b10192f --- /dev/null +++ b/src/components/bl-form-radio/index.tsx @@ -0,0 +1,39 @@ +import { Image } from '@tarojs/components'; + +import { Radio } from '@taroify/core'; +import { RadioGroupProps, RadioProps } from '@taroify/core/radio'; + +import './index.less'; + +interface IProps extends RadioProps { + text: string; + value: BL.Anything; +} + +interface IGroupProps extends RadioGroupProps {} + +const PREFIX = 'bl-form-radio'; + +export function BlFormRadioGroup(props: IGroupProps) { + return ; +} + +export function BlFormRadio(props: IProps) { + const { name, text, value } = props; + + return ( + + } + > + {text} + + ); +} diff --git a/src/components/bl-form-select/index.less b/src/components/bl-form-select/index.less new file mode 100644 index 0000000..37688ba --- /dev/null +++ b/src/components/bl-form-select/index.less @@ -0,0 +1,30 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.bl-form-select { + height: 100%; + width: 100%; + .flex-row(); + + &__input { + flex: 1; + height: 100%; + font-size: 32px; + line-height: 32px; + color: @blColor; + } + + &__input-placeholder { + font-size: 32px; + line-height: 32px; + color: #CCCCCC; + } + + &__right-icon { + .flex-row(); + height: 48px; + font-size: 32px; + line-height: 48px; + color: #969799; + } +} \ No newline at end of file diff --git a/src/components/bl-form-select/index.tsx b/src/components/bl-form-select/index.tsx new file mode 100644 index 0000000..ff4b7fa --- /dev/null +++ b/src/components/bl-form-select/index.tsx @@ -0,0 +1,50 @@ +import { Input } from '@tarojs/components'; + +import { ArrowRight } from '@taroify/icons'; +import { useCallback, useState } from 'react'; + +import { ISelectProps, PopupSelect } from '@/components/select'; + +import './index.less'; + +interface IProps extends ISelectProps {} + +const PREFIX = 'bl-form-select'; + +function BlFormSelect(props: IProps) { + const { value, options, onSelect, ...otherProps } = props; + const [showSelect, setShowSelect] = useState(false); + + const handleSelect = useCallback( + newValue => { + setShowSelect(false); + onSelect(newValue); + }, + [onSelect] + ); + + return ( + <> +
setShowSelect(true)}> + i.value === value)?.label || ''} + /> + +
+ setShowSelect(false)} + {...otherProps} + /> + + ); +} + +export default BlFormSelect; diff --git a/src/components/bl-salary-input/index.less b/src/components/bl-salary-input/index.less new file mode 100644 index 0000000..bc85e0c --- /dev/null +++ b/src/components/bl-salary-input/index.less @@ -0,0 +1,71 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.bl-salary-input { + + &__item { + height: 100px; + .flex-row(); + position: relative; + + &::after { + content: ""; + height: 2px; + background: #00000026; + position: absolute; + top: 0; + left: 0; + right: -32px; + } + + &:first-child { + &::after { + height: 0; + } + } + } + + .text(@fontSize: 28px) { + font-size: @fontSize; + line-height: 1; + font-weight: 400; + color: @blColor; + white-space: nowrap + } + + &__title { + .text(@fontSize: 32px); + margin-right: 40px; + } + + &__input-container { + height: 72px; + flex: 1; + .flex-row(); + border-radius: 16px; + background: #F6F6F6; + padding: 0 16px; + } + + &__input { + .text(); + flex: 1; + height: 72px; + line-height: 72px; + } + + &__input-placeholder { + color: @blColorG1; + } + + + &__unit { + .text(); + margin-left: 16px; + } + + &__center-divider { + .text(); + margin: 0 12px; + } +} \ No newline at end of file diff --git a/src/components/bl-salary-input/index.tsx b/src/components/bl-salary-input/index.tsx new file mode 100644 index 0000000..301500c --- /dev/null +++ b/src/components/bl-salary-input/index.tsx @@ -0,0 +1,155 @@ +import { BaseEventOrig, Input, InputProps } from '@tarojs/components'; + +import { useCallback, useEffect } from 'react'; + +import { logWithPrefix, string2Number } from '@/utils/common'; +import { EmployType } from '@/constants/job'; + +import './index.less'; +import { isFullTimePriceRequired, isPartTimePriceRequired } from '@/utils/job'; + +export type BlSalaryValue = [number, number, number, number]; + +interface IProps { + value: BlSalaryValue; + employType?: EmployType; + onChange: (result: BlSalaryValue) => void; +} + +const PREFIX = 'bl-salary-input'; +const log = logWithPrefix(PREFIX); +const MAX_FULL_PRICE = 1000; +const MAX_PART_PRICE = 2000; + +function BlSalaryInput(props: IProps) { + const { value: initValue = [], onChange, employType } = props; + const [minFull = '', maxFull = '', minPart = '', maxPart = ''] = initValue; + + const onInput = useCallback( + (value: number, index: number) => { + const newValue = [...initValue] as BlSalaryValue; + newValue.splice(index, 1, value); + log('onInput', newValue); + onChange(newValue); + }, + [initValue, onChange] + ); + + const handleInputMinFull = useCallback( + (e: BaseEventOrig) => { + const value = e.detail.value || ''; + if (Number.isNaN(Number(value))) { + return; + } + onInput(string2Number(value), 0); + }, + [onInput] + ); + + const handleInputMaxFull = useCallback( + (e: BaseEventOrig) => { + const value = e.detail.value || ''; + if (Number.isNaN(Number(value))) { + return; + } + onInput(Math.min(string2Number(value), MAX_FULL_PRICE), 1); + }, + [onInput] + ); + + const handleInputMinPart = useCallback( + (e: BaseEventOrig) => { + const value = e.detail.value || ''; + if (Number.isNaN(Number(value))) { + return; + } + onInput(string2Number(value), 2); + }, + [onInput] + ); + + const handleInputMaxPart = useCallback( + (e: BaseEventOrig) => { + const value = e.detail.value || ''; + if (Number.isNaN(Number(value))) { + return; + } + onInput(Math.min(string2Number(value), MAX_PART_PRICE), 3); + }, + [onInput] + ); + + useEffect(() => { + onChange([minFull, maxFull, minPart, maxPart] as BlSalaryValue); + }, [minFull, maxFull, minPart, maxPart, onChange]); + + return ( +
+ {isFullTimePriceRequired(employType) && ( +
+
全职
+
+ +
K/月
+
+
-
+
+ +
K/月
+
+
+ )} + {isPartTimePriceRequired(employType) && ( +
+
兼职
+
+ +
元/小时
+
+
-
+
+ +
元/小时
+
+
)} +
+ ); +} + +export default BlSalaryInput; diff --git a/src/components/cell/index.less b/src/components/cell/index.less new file mode 100644 index 0000000..75bac3b --- /dev/null +++ b/src/components/cell/index.less @@ -0,0 +1,12 @@ +.bl-cell { + height: 112px; + padding-left: 24px; + padding-right: 24px; + border-radius: 16px; + + &__right-text { + font-size: 28px; + font-weight: 400; + color: @blColor; + } +} \ No newline at end of file diff --git a/src/components/cell/index.tsx b/src/components/cell/index.tsx new file mode 100644 index 0000000..c5065b2 --- /dev/null +++ b/src/components/cell/index.tsx @@ -0,0 +1,22 @@ +import { Cell } from '@taroify/core'; +import { CellProps } from '@taroify/core/cell'; +import classNames from 'classnames'; + +import './index.less'; + +interface IProps extends CellProps { + rightText?: string; +} + +const PREFIX = 'bl-cell'; + +function BlCell(props: IProps) { + const { className, rightText, ...otherProps } = props; + return ( + + {rightText &&
{rightText}
} +
+ ); +} + +export default BlCell; diff --git a/src/components/certification-status/index.less b/src/components/certification-status/index.less new file mode 100644 index 0000000..21ef232 --- /dev/null +++ b/src/components/certification-status/index.less @@ -0,0 +1,74 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.certification-status { + + .taroify-cell__title { + flex: unset; + margin-right: 24px; + } + + &__content { + .flex-row(); + justify-content: space-between; + } + + &__right-text { + font-size: 28px; + font-weight: 400; + color: @blColor; + } +} + +.certification-status-icon { + height: 38px; + .flex-row(); + padding: 0 8px; + border-radius: 4px; + + &.none { + color: @blColorG1; + background: #F7F7F7; + } + + &.success { + color: #117264; + background: #DCF7F0; + } + + &.fail { + color: #FF5051; + background: #FF50511F; + } + + &__icon { + width: 24px; + height: 24px; + } + + &__describe { + font-size: 24px; + line-height: 24px; + font-weight: 400; + margin-left: 6px; + white-space: nowrap; + } + + &.small { + height: 30px; + padding: 0 6px; + + &__icon { + width: 22px; + height: 22px; + } + + &__describe { + font-size: 20px; + line-height: 24px; + font-weight: 400; + margin-left: 4px; + } + + } +} \ No newline at end of file diff --git a/src/components/certification-status/index.tsx b/src/components/certification-status/index.tsx new file mode 100644 index 0000000..d5ce218 --- /dev/null +++ b/src/components/certification-status/index.tsx @@ -0,0 +1,109 @@ +import { Image } from '@tarojs/components'; + +import { Cell } from '@taroify/core'; +import classNames from 'classnames'; +import { useCallback } from 'react'; + +import { PageUrl } from '@/constants/app'; +import { CertificationStatusType } from '@/constants/company'; +import useUserInfo from '@/hooks/use-user-info'; +import { navigateTo } from '@/utils/route'; + +import './index.less'; + +interface IProps { + className?: string; +} + +interface IIconProps { + status: CertificationStatusType; + className?: string; + small?: boolean; +} + +const PREFIX = 'certification-status'; +const ICON_PREFIX = 'certification-status-icon'; +const getStatusClassName = (status: CertificationStatusType) => { + switch (status) { + case CertificationStatusType.None: + return 'none'; + case CertificationStatusType.Success: + return 'success'; + case CertificationStatusType.Fail: + return 'fail'; + default: + return ''; + } +}; +const getStatusIconUrl = (status: CertificationStatusType) => { + switch (status) { + case CertificationStatusType.None: + return require('@/statics/svg/certification-status-none.svg'); + case CertificationStatusType.Success: + return require('@/statics/svg/certification-status-success.svg'); + case CertificationStatusType.Fail: + return require('@/statics/svg/certification-status-fail.svg'); + default: + return; + } +}; +const getStatusDescribe = (status: CertificationStatusType) => { + switch (status) { + case CertificationStatusType.None: + return '未认证'; + case CertificationStatusType.Success: + return '实人认证'; + case CertificationStatusType.Fail: + return '认证失败'; + default: + return; + } +}; +const getRightText = (status: CertificationStatusType) => { + switch (status) { + case CertificationStatusType.None: + return '去认证'; + case CertificationStatusType.Fail: + return '重新认证'; + default: + return; + } +}; + +export function CertificationStatusIcon(props: IIconProps) { + const { status, className, small = false } = props; + return ( +
+ +
{getStatusDescribe(status)}
+
+ ); +} + +function CertificationStatus(props: IProps) { + const { className } = props; + const { bossAuthStatus: status = CertificationStatusType.None } = useUserInfo(); + + const handleClick = useCallback(() => { + if (status !== CertificationStatusType.Success) { + navigateTo(PageUrl.CertificationStart); + } + }, [status]); + + return ( + +
+ +
{getRightText(status)}
+
+
+ ); +} + +export default CertificationStatus; diff --git a/src/components/city-picker/index.less b/src/components/city-picker/index.less new file mode 100644 index 0000000..b74a826 --- /dev/null +++ b/src/components/city-picker/index.less @@ -0,0 +1,4 @@ +@import '@/styles/variables.less'; + +.city-picker { +} \ No newline at end of file diff --git a/src/components/city-picker/index.tsx b/src/components/city-picker/index.tsx new file mode 100644 index 0000000..0b4849a --- /dev/null +++ b/src/components/city-picker/index.tsx @@ -0,0 +1,70 @@ +import { AreaPicker, Popup } from '@taroify/core'; +import { AreaData } from '@taroify/core/area-picker/area-picker.shared'; +import { useCallback, useRef } from 'react'; + +import SafeBottomPadding from '@/components/safe-bottom-padding'; +import { CITY_LIST, COUNTY_LIST, PROVINCE_LIST } from '@/constants/city'; + +import './index.less'; + +interface IProps { + depth?: 1 | 2 | 3; + areaValues?: string[]; + onCancel: () => void; + onConfirm: (areaValues: string[]) => void; +} + +interface IPopupProps extends IProps { + open: boolean; +} + +const PREFIX = 'city-picker'; +const areaList: AreaData = { + province_list: PROVINCE_LIST, + city_list: CITY_LIST, + county_list: COUNTY_LIST, +}; +const DEFAULT_AREA = ['110000', '110100', '110101']; + +function CityPicker(props: IProps) { + const { areaValues = DEFAULT_AREA, depth = 3, onCancel, onConfirm } = props; + const provinceCodeRef = useRef(areaValues[0]); + const cityCodeRef = useRef(areaValues[1]); + const countyCodeRef = useRef(areaValues[2]); + + const handleClickConfirm = useCallback(() => { + onConfirm([provinceCodeRef.current, cityCodeRef.current, countyCodeRef.current]); + }, [onConfirm]); + + const handleChange = useCallback((values: string[]) => { + provinceCodeRef.current = values[0]; + cityCodeRef.current = values[1]; + countyCodeRef.current = values[2]; + }, []); + + return ( +
+ +
+ ); +} + +export function CityPickerPopup(props: IPopupProps) { + const { open, onCancel } = props; + return ( + + + + + ); +} + +export default CityPicker; diff --git a/src/components/common-dialog/index.less b/src/components/common-dialog/index.less new file mode 100644 index 0000000..ba4d044 --- /dev/null +++ b/src/components/common-dialog/index.less @@ -0,0 +1,32 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.common-dialog { + &__container { + display: flex; + flex-direction: column; + align-items: center; + } + + &__title { + font-size: 36px; + line-height: 58px; + font-weight: 500; + color: @blColor; + } + + &__confirm-button, + &__cancel-button { + .button(@width: 360px, @height: 72px, @fontSize: 28px, @fontWeight: 400, @borderRadius: 44px); + } + + &__confirm-button { + margin-top: 48px; + } + + &__cancel-button { + color: @blHighlightColor; + background: transparent; + margin-top: 40px; + } +} \ No newline at end of file diff --git a/src/components/common-dialog/index.tsx b/src/components/common-dialog/index.tsx new file mode 100644 index 0000000..8c329d4 --- /dev/null +++ b/src/components/common-dialog/index.tsx @@ -0,0 +1,47 @@ +import { Button } from '@tarojs/components'; + +import { Dialog } from '@taroify/core'; +import classNames from 'classnames'; +import { PropsWithChildren } from 'react'; + +import './index.less'; + +interface IProps extends PropsWithChildren { + visible: boolean; + content: string; + onClose?: () => void; + className?: string; + confirm?: string; + cancel?: string; + onClick?: () => void; + onCancel?: () => void; +} + +const PREFIX = 'common-dialog'; + +function CommonDialog(props: IProps) { + const { visible, content, confirm, cancel, className, children, onClose, onClick, onCancel } = props; + + return ( + + +
+
{content}
+ {children} + {confirm && ( + + )} + {cancel && ( + + )} +
+
+
+ ); +} + +export default CommonDialog; diff --git a/src/components/custom-navigation-bar/index.less b/src/components/custom-navigation-bar/index.less new file mode 100644 index 0000000..a2bdce1 --- /dev/null +++ b/src/components/custom-navigation-bar/index.less @@ -0,0 +1,8 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + + +.bl-navigation-bar { + .flex-row(); + padding: 0 24px; +} \ No newline at end of file diff --git a/src/components/custom-navigation-bar/index.tsx b/src/components/custom-navigation-bar/index.tsx new file mode 100644 index 0000000..aa7ea12 --- /dev/null +++ b/src/components/custom-navigation-bar/index.tsx @@ -0,0 +1,30 @@ +import Taro from '@tarojs/taro'; + +import classNames from 'classnames'; +import { PropsWithChildren } from 'react'; + +import useNavigation from '@/hooks/use-navigation'; + +import './index.less'; + +interface IProps extends PropsWithChildren { + className?: string; +} + +const PREFIX = 'bl-navigation-bar'; + +function CustomNavigationBar(props: IProps) { + const { className, children } = props; + const { barHeight, statusBarHeight } = useNavigation(); + + return ( +
+ {children} +
+ ); +} + +export default CustomNavigationBar; diff --git a/src/components/dev-div/index.tsx b/src/components/dev-div/index.tsx new file mode 100644 index 0000000..c492eef --- /dev/null +++ b/src/components/dev-div/index.tsx @@ -0,0 +1,43 @@ +import React, { useCallback, useRef } from 'react'; + +interface IProps extends React.HTMLAttributes { + OnDev?: () => void; +} + +const CLICK_COUNT = 5; + +function DevDiv(props: IProps) { + const { OnDev, onClick, ...otherProps } = props; + const lastClickTime = useRef(0); + const clickCount = useRef(0); + + const handleClick = useCallback( + e => { + onClick?.(e); + if (!OnDev) { + return; + } + + const currentTime = Date.now(); + const timeDiff = currentTime - lastClickTime.current; + + if (timeDiff < 300) { + clickCount.current = clickCount.current + 1; + + if (clickCount.current >= CLICK_COUNT) { + OnDev?.(); + clickCount.current = 0; + } + } else { + clickCount.current = 1; + } + + lastClickTime.current = currentTime; + }, + [OnDev, onClick] + ); + + return
; +} + +export default DevDiv; diff --git a/src/components/group-card/index.less b/src/components/group-card/index.less new file mode 100644 index 0000000..9fb7121 --- /dev/null +++ b/src/components/group-card/index.less @@ -0,0 +1,92 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.group-card { + width: 100%; + padding: 32px; + background: #FFF; + border-radius: 16px; + margin-bottom: 24px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + box-sizing: border-box; + + &__group-container { + flex: 1; + display: flex; + flex-direction: row; + align-items: center; + } + + &__group-avatar { + width: 88px; + height: 88px; + } + + &__group-info { + width: 340px; + display: flex; + flex-direction: column; + align-items: flex-start; + margin-left: 32px; + + &.full { + flex: 1; + } + } + + &__group-title-container { + width: 100%; + display: flex; + flex-direction: row; + align-items: center; + } + + &__group-title { + flex: 1; + font-size: 32px; + line-height: 40px; + font-weight: 500; + color: @blColor; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + &__group-full-icon { + font-size: 20px; + line-height: 30px; + font-weight: 400; + color: @blHighlightColor; + border: 2px solid @blHighlightColor; + border-radius: 4px; + padding: 0 6px; + margin-left: 10px; + margin-bottom: 1px; + } + + &__group-desc { + display: flex; + flex-direction: row; + align-items: center; + font-size: 28px; + line-height: 40px; + font-weight: 400; + margin-top: 16px; + } + + &__group-job-count { + color: @blColor; + } + + &__group-view { + color: @blHighlightColor; + margin-left: 10px; + } + + &__group-button { + .button(@width: 176px; @height: 56px; @fontSize: 28px; @fontWeight: 500; @borderRadius: 48px;); + } +} \ No newline at end of file diff --git a/src/components/group-card/index.tsx b/src/components/group-card/index.tsx new file mode 100644 index 0000000..944a3f2 --- /dev/null +++ b/src/components/group-card/index.tsx @@ -0,0 +1,61 @@ +import { Image } from '@tarojs/components'; + +import classNames from 'classnames'; +import { useCallback } from 'react'; + +import LoginButton from '@/components/login-button'; +import { PageUrl } from '@/constants/app'; +import { GroupType } from '@/constants/group'; +import { GroupInfo } from '@/types/group'; +import { navigateTo } from '@/utils/route'; + +import './index.less'; + +interface IProps { + type: GroupType; + data: GroupInfo; + onClick: () => void; +} + +const PREFIX = 'group-card'; + +function GroupCard(props: IProps) { + const { type, data, onClick } = props; + const showButton = type === GroupType.All; + const isFull = (data.groupMemberCount || 0) >= 500; + + const handleClickView = useCallback(() => { + navigateTo(PageUrl.GroupJob, { groupId: data.blGroupId, title: data.imGroupNick }); + }, [data]); + + return ( +
+
+ +
+
+
{data.imGroupNick}
+ {isFull &&
已满
} +
+
+
{`${data.allJobs}条通告`}
+
+ 查看 +
+
+
+
+ {showButton && ( + + 我要进群 + + )} +
+ ); +} + +export default GroupCard; diff --git a/src/components/group-list/index.less b/src/components/group-list/index.less new file mode 100644 index 0000000..12729b3 --- /dev/null +++ b/src/components/group-list/index.less @@ -0,0 +1,3 @@ +@import '@/styles/variables.less'; + +.group-list {} \ No newline at end of file diff --git a/src/components/group-list/index.tsx b/src/components/group-list/index.tsx new file mode 100644 index 0000000..46f94e7 --- /dev/null +++ b/src/components/group-list/index.tsx @@ -0,0 +1,149 @@ +import { List, PullRefresh } from '@taroify/core'; +import classNames from 'classnames'; +import { useCallback, useEffect, useRef, useState } from 'react'; + +import GroupCard from '@/components/group-card'; +import ListPlaceholder from '@/components/list-placeholder'; +import { GroupInfo, GetGroupsRequest } from '@/types/group'; +import { logWithPrefix } from '@/utils/common'; +import { requestGroupList } from '@/utils/group'; + +import './index.less'; + +interface IRequestProps extends GetGroupsRequest {} + +export interface IGroupListProps extends IRequestProps { + refreshDisabled?: boolean; + listHeight?: number; + className?: string; + onListEmpty?: () => void; + onClickInvite: (data: GroupInfo) => void; +} + +const FIRST_PAGE = 0; +const PAGE_SIZE = 40; +const PREFIX = 'group-list'; +const log = logWithPrefix(PREFIX); + +function JobList(props: IGroupListProps) { + const { className, listHeight, refreshDisabled, type, imGroupNick, status, onListEmpty, onClickInvite } = props; + const [refreshing, setRefreshing] = useState(false); + const [hasMore, setHasMore] = useState(true); + const [loadingMore, setLoadingMore] = useState(false); + const [loadMoreError, setLoadMoreError] = useState(false); + const [dataList, setDataList] = useState([]); + const currentPage = useRef(FIRST_PAGE); + const requestProps = useRef({ type }); + const onListEmptyRef = useRef(onListEmpty); + + const handleRefresh = useCallback(async () => { + log('start pull refresh'); + try { + setRefreshing(true); + setLoadMoreError(false); + const { page, hasMore: more, groupResults } = await requestGroupList({ ...requestProps.current, page: 1 }); + setHasMore(more); + setDataList(groupResults); + currentPage.current = page; + !groupResults.length && onListEmptyRef.current?.(); + log('pull refresh success'); + } catch (e) { + setDataList([]); + setHasMore(false); + setLoadMoreError(true); + currentPage.current = FIRST_PAGE; + log('pull refresh failed'); + } finally { + setRefreshing(false); + } + }, []); + + const handleLoadMore = useCallback(async () => { + log('start load more', hasMore); + if (!hasMore) { + return; + } + setLoadMoreError(false); + setLoadingMore(true); + try { + const { + page, + hasMore: more, + groupResults, + } = await requestGroupList({ ...requestProps.current, page: currentPage.current + 1 }); + setDataList([...dataList, ...groupResults]); + setHasMore(more); + currentPage.current = page; + log('load more success'); + } catch (e) { + setLoadMoreError(true); + log('load more failed'); + } finally { + setLoadingMore(false); + } + }, [dataList, currentPage, hasMore]); + + useEffect(() => { + onListEmptyRef.current = onListEmpty; + }, [onListEmpty]); + + useEffect(() => { + log('request params changed'); + requestProps.current = { + type, + status, + imGroupNick: imGroupNick ? imGroupNick.trim() : undefined, + pageSize: PAGE_SIZE, + }; + }, [type, status, imGroupNick]); + + useEffect(() => { + const refresh = async () => { + log('props changed, start refresh list data'); + try { + setDataList([]); + setLoadingMore(true); + setLoadMoreError(false); + const { page, hasMore: more, groupResults } = await requestGroupList({ ...requestProps.current, page: 1 }); + setHasMore(more); + setDataList(groupResults); + currentPage.current = page; + !groupResults.length && onListEmptyRef.current?.(); + } catch (e) { + setDataList([]); + setHasMore(false); + setLoadMoreError(true); + currentPage.current = FIRST_PAGE; + } finally { + log('props changed, refresh list data end'); + setLoadingMore(false); + } + }; + refresh(); + }, [type, status, imGroupNick]); + + return ( + + + {dataList.map(item => ( + onClickInvite(item)} /> + ))} + + + + ); +} + +export default JobList; diff --git a/src/components/home-page/index.less b/src/components/home-page/index.less new file mode 100644 index 0000000..e69de29 diff --git a/src/components/home-page/index.tsx b/src/components/home-page/index.tsx new file mode 100644 index 0000000..020918f --- /dev/null +++ b/src/components/home-page/index.tsx @@ -0,0 +1,18 @@ +import React from 'react'; + +import BaseTabBar from '@/components/tab-bar'; + +import './index.less'; + +interface IProps extends React.PropsWithChildren {} + +export default function HomePage(props: IProps) { + const { children } = props; + + return ( + + {children} + + + ); +} diff --git a/src/components/job-card/index.less b/src/components/job-card/index.less new file mode 100644 index 0000000..f7e1481 --- /dev/null +++ b/src/components/job-card/index.less @@ -0,0 +1,163 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.job-card { + &__container { + width: 100%; + height: fit-content; + padding: 24px; + box-sizing: border-box; + overflow: hidden; + border-radius: 16px; + background: #FFFFFF; + margin-bottom: 24px; + } + + &__header { + width: 100%; + .flex-row(); + align-items: flex-start; + } + + &__title { + font-size: 30px; + line-height: 32px; + font-weight: 500; + color: @blColor; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + &__employment-type { + width: fit-content; + padding: 3px 6px; + font-size: 20px; + line-height: 24px; + font-weight: 400; + background: @blHighlightBg; + color: @blHighlightColor; + white-space: nowrap; + margin-left: 8px; + + &__wrapper { + flex: 1; + } + } + + &__certification-type { + margin-left: 8px; + } + + &__tags { + display: flex; + flex-direction: row; + flex-wrap: wrap; + overflow: hidden; + margin-top: 32px; + // 抵消最后一行的 margin-bottom + margin-bottom: -10px; + } + + &__tag { + padding: 3px 6px; + font-size: 20px; + line-height: 24px; + font-weight: 400; + background: #F2F2F2; + color: @blColorG2; + white-space: nowrap; + margin-right: 8px; + margin-bottom: 10px; + } + + &__salary { + font-size: 30px; + line-height: 32px; + font: 400; + color: @blHighlightColor; + margin-top: 32px; + } + + &__content { + margin-top: 20px; + } + + &__summary { + font-size: 28px; + line-height: 40px; + font-weight: 400; + color: @blColor; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + &__distance-wrapper { + display: flex; + flex-direction: row; + align-items: center; + margin-top: 8px; + } + + &__detailed-address { + flex: 1 1; + font-size: 28px; + font-weight: 400; + color: @blColorG1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + &__distance-icon { + width: 28px; + height: 28px; + margin-left: 15px; + margin-right: 6px; + } + + &__distance { + font-size: 24px; + line-height: 40px; + font-weight: 400; + color: @blColorG1; + } + + &__divider { + width: 100%; + height: 1px; + background: #E0E0E0; + margin-top: 32px; + margin-bottom: 24px; + } + + &__footer { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + } + + &__publisher { + display: flex; + flex-direction: row; + align-items: center; + } + + &__publisher-avatar { + width: 48px; + height: 48px; + border-radius: 50%; + margin-right: 18px; + } + + &__publisher-name, + &__city { + font-size: 24px; + line-height: 40px; + font-weight: 400; + color: @blColorG2; + } + +} \ No newline at end of file diff --git a/src/components/job-card/index.tsx b/src/components/job-card/index.tsx new file mode 100644 index 0000000..5b708fc --- /dev/null +++ b/src/components/job-card/index.tsx @@ -0,0 +1,111 @@ +import { Image } from '@tarojs/components'; + +import classNames from 'classnames'; +import React, { useCallback } from 'react'; + +import { CertificationStatusIcon } from '@/components/certification-status'; +import { PageUrl } from '@/constants/app'; +import { CITY_CODE_TO_NAME_MAP, COUNTY_CODE_TO_NAME_MAP } from '@/constants/city'; +import { CertificationStatusType } from '@/constants/company'; +import { EMPLOY_TYPE_TITLE_MAP, EmployType } from '@/constants/job'; +import { JobInfo } from '@/types/job'; +import { LocationInfo } from '@/types/location'; +import { getJobSalary, getJobTitle } from '@/utils/job'; +import { calcDistance } from '@/utils/location'; +import { navigateTo, redirectTo } from '@/utils/route'; + +import './index.less'; + +interface IProps { + data: JobInfo; + redirectOpen?: boolean; + className?: string; +} + +const PREFIX = 'job-card'; +const getCityDes = (location: LocationInfo) => { + if (!location) { + return ''; + } + let des = CITY_CODE_TO_NAME_MAP.get(location.cityCode); + if (location.countyCode) { + des += `-${COUNTY_CODE_TO_NAME_MAP.get(location.countyCode)}`; + } + return des; +}; + +function JobCard(props: IProps) { + const { className, data, redirectOpen } = props; + const { + id, + tags = [], + employType = EmployType.All, + jobDescription, + sourceText, + publisher, + publisherAvatar, + jobLocation, + distance, + isAuthed = false, + } = data; + + const handleClickCard = useCallback(() => { + if (redirectOpen) { + redirectTo(PageUrl.JobDetail, { id }); + } else { + navigateTo(PageUrl.JobDetail, { id }); + } + }, [id, redirectOpen]); + + return ( +
+
+
{getJobTitle(data)}
+
+
{EMPLOY_TYPE_TITLE_MAP[employType]}
+
+ {isAuthed && ( + + )} +
+
+ {tags.map((keyword: string, index) => ( +
+ {keyword} +
+ ))} +
+
{getJobSalary(data) || '见描述'}
+
+
{jobDescription || sourceText}
+
+
{jobLocation?.address}
+ {distance && ( + <> + +
{calcDistance(distance)}
+ + )} +
+
+
+
+
+ +
{publisher}
+
+
{getCityDes(jobLocation)}
+
+
+ ); +} + +export default React.memo(JobCard); diff --git a/src/components/job-list/index.less b/src/components/job-list/index.less new file mode 100644 index 0000000..e69de29 diff --git a/src/components/job-list/index.tsx b/src/components/job-list/index.tsx new file mode 100644 index 0000000..dba372d --- /dev/null +++ b/src/components/job-list/index.tsx @@ -0,0 +1,207 @@ +import { List, PullRefresh } from '@taroify/core'; +import classNames from 'classnames'; +import { isEqual } from 'lodash-es'; +import { useCallback, useEffect, useRef, useState } from 'react'; + +import JobCard from '@/components/job-card'; +import ListPlaceholder from '@/components/list-placeholder'; +import { JobType, EmployType, SortType } from '@/constants/job'; +import { JobInfo, GetJobsRequest } from '@/types/job'; +import { logWithPrefix } from '@/utils/common'; +import { requestJobList as requestData } from '@/utils/job'; + +import './index.less'; + +interface IRequestProps extends Partial {} + +export interface IJobListProps extends IRequestProps { + visible?: boolean; + refreshDisabled?: boolean; + listHeight?: number; + className?: string; + onListEmpty?: () => void; +} + +const FIRST_PAGE = 0; +const PAGE_SIZE = 40; +const PREFIX = 'job-list'; +const log = logWithPrefix(PREFIX); + +function JobList(props: IJobListProps) { + const { + className, + listHeight, + refreshDisabled, + visible = true, + cityCode = 'ALL', + category = JobType.All, + employType = EmployType.All, + sortType = SortType.RECOMMEND, + isFollow = false, + isOwner = false, + keyWord, + latitude, + longitude, + minSalary, + maxSalary, + blGroupId, + onListEmpty, + } = props; + const [refreshing, setRefreshing] = useState(false); + const [hasMore, setHasMore] = useState(true); + const [loadingMore, setLoadingMore] = useState(false); + const [loadMoreError, setLoadMoreError] = useState(false); + const [dataList, setDataList] = useState([]); + const currentPage = useRef(FIRST_PAGE); + const requestProps = useRef({}); + const prevRequestProps = useRef({}); + const onListEmptyRef = useRef(onListEmpty); + + const handleRefresh = useCallback(async () => { + log('start pull refresh'); + try { + setRefreshing(true); + setLoadMoreError(false); + const { page, hasMore: more, jobResults } = await requestData({ ...requestProps.current, page: 1 }); + setHasMore(more); + setDataList(jobResults); + currentPage.current = page; + !jobResults.length && onListEmptyRef.current?.(); + log('pull refresh success'); + } catch (e) { + setDataList([]); + setHasMore(false); + setLoadMoreError(true); + currentPage.current = FIRST_PAGE; + log('pull refresh failed'); + } finally { + setRefreshing(false); + } + }, []); + + const handleLoadMore = useCallback(async () => { + log('start load more', hasMore); + if (!hasMore) { + return; + } + setLoadMoreError(false); + setLoadingMore(true); + try { + const { + page, + hasMore: more, + jobResults, + } = await requestData({ ...requestProps.current, page: currentPage.current + 1 }); + setDataList([...dataList, ...jobResults]); + setHasMore(more); + currentPage.current = page; + log('load more success'); + } catch (e) { + setLoadMoreError(true); + log('load more failed'); + } finally { + setLoadingMore(false); + } + }, [dataList, currentPage, hasMore]); + + useEffect(() => { + onListEmptyRef.current = onListEmpty; + }, [onListEmpty]); + + useEffect(() => { + log('request params changed'); + requestProps.current = { + category, + cityCode, + employType, + sortType, + isFollow, + isOwner, + keyWord, + latitude, + longitude, + minSalary, + maxSalary, + blGroupId, + pageSize: PAGE_SIZE, + }; + }, [ + category, + cityCode, + employType, + sortType, + isFollow, + isOwner, + keyWord, + latitude, + longitude, + minSalary, + maxSalary, + blGroupId, + ]); + + // 初始化数据&配置变更后刷新数据 + useEffect(() => { + // 相比前一次可见时没有数据变更时,不再重新请求 + if (isEqual(prevRequestProps.current, requestProps.current)) { + log('visible/city changed, but request params not change, ignore'); + return; + } + // 列表不可见时,先不做处理 + if (!visible) { + log('visible/city changed, but is not visible, only clear list'); + return; + } + + prevRequestProps.current = requestProps.current; + const refresh = async () => { + log('visible/city changed, start refresh list data'); + try { + setDataList([]); + setLoadingMore(true); + setLoadMoreError(false); + const { page, hasMore: more, jobResults } = await requestData({ ...requestProps.current, page: 1 }); + setHasMore(more); + setDataList(jobResults); + currentPage.current = page; + !jobResults.length && onListEmptyRef.current?.(); + } catch (e) { + setDataList([]); + setHasMore(false); + setLoadMoreError(true); + currentPage.current = FIRST_PAGE; + } finally { + log('visible/city changed, refresh list data end'); + setLoadingMore(false); + } + }; + refresh(); + }, [visible, cityCode, employType, sortType, keyWord, minSalary, maxSalary, blGroupId]); + + // log('render', `hasMore: ${hasMore}, loadingMore: ${loadingMore}, refreshing: ${refreshing}`); + + return ( + + + {dataList.map(item => ( + + ))} + + + + ); +} + +export default JobList; diff --git a/src/components/job-manage-card/index.less b/src/components/job-manage-card/index.less new file mode 100644 index 0000000..235e1a4 --- /dev/null +++ b/src/components/job-manage-card/index.less @@ -0,0 +1,69 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.job-manage-card { + width: 100%; + height: 152px; + .flex-row(); + padding: 24px 32px; + background: #FFF; + box-sizing: border-box; + position: relative; + + &::after { + content: ""; + height: 2px; + background: #00000026; + position: absolute; + top: 0; + left: 32px; + right: 0; + } + + &:first-child { + &::after { + height: 0; + } + } + + &__info { + flex: 1; + height: 100%; + + &__title { + max-width: 75vw; + font-size: 32px; + line-height: 48px; + font-weight: 400; + color: @blColor; + .noWrap(); + } + + &__location { + max-width: 75vw; + font-size: 28px; + line-height: 40px; + font-weight: 400; + color: @blColorG1; + margin-top: 16px; + .noWrap(); + } + } + + &__status { + height: 100%; + .flex-row(); + font-size: 28px; + line-height: 32px; + font-weight: 400; + color: @blColorG1; + + &.open { + color: @blHighlightColor; + } + + &.error { + color: #FF5051; + } + } +} \ No newline at end of file diff --git a/src/components/job-manage-card/index.tsx b/src/components/job-manage-card/index.tsx new file mode 100644 index 0000000..476f545 --- /dev/null +++ b/src/components/job-manage-card/index.tsx @@ -0,0 +1,49 @@ +import classNames from 'classnames'; +import React, { useCallback } from 'react'; + +import { PageUrl } from '@/constants/app'; +import { JOB_MANAGE_STATUS_TITLE_MAP, JobManageStatus } from '@/constants/job'; +import { JobManageInfo } from '@/types/job'; +import { getJobLocation } from '@/utils/job'; +import { navigateTo } from '@/utils/route'; + +import './index.less'; + +interface IProps { + data: JobManageInfo; + className?: string; +} + +const PREFIX = 'job-manage-card'; + +const STATUS_CLASS_MAP = { + [JobManageStatus.WaitVerify]: 'pending', + [JobManageStatus.Open]: 'open', + [JobManageStatus.Pending]: 'pending', + [JobManageStatus.Error]: 'error', + [JobManageStatus.Close]: 'close', + [JobManageStatus.Expire]: 'close', +}; + +function JobManageCard(props: IProps) { + const { data = {} } = props; + const { id, title, status } = data as JobManageInfo; + + const handleClick = useCallback(() => { + navigateTo(PageUrl.JobDetail, { id }); + }, [id]); + + return ( +
+
+
{title}
+
{getJobLocation(data as JobManageInfo)}
+
+
+
{JOB_MANAGE_STATUS_TITLE_MAP[status]}
+
+
+ ); +} + +export default React.memo(JobManageCard); diff --git a/src/components/job-manage-list/index.less b/src/components/job-manage-list/index.less new file mode 100644 index 0000000..1df8cd1 --- /dev/null +++ b/src/components/job-manage-list/index.less @@ -0,0 +1,2 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; \ No newline at end of file diff --git a/src/components/job-manage-list/index.tsx b/src/components/job-manage-list/index.tsx new file mode 100644 index 0000000..1575094 --- /dev/null +++ b/src/components/job-manage-list/index.tsx @@ -0,0 +1,171 @@ +import Taro from '@tarojs/taro'; + +import { List, PullRefresh } from '@taroify/core'; +import classNames from 'classnames'; +import { isEqual } from 'lodash-es'; +import { useCallback, useEffect, useRef, useState } from 'react'; + +import JobManageCard from '@/components/job-manage-card'; +import ListPlaceholder from '@/components/list-placeholder'; +import { EventName } from '@/constants/app'; +import { GetJobManagesRequest, JobManageInfo } from '@/types/job'; +import { logWithPrefix } from '@/utils/common'; +import { requestJobManageList as requestData } from '@/utils/job'; + +import './index.less'; + +interface IRequestProps extends Partial {} + +export interface IJobManageListProps extends IRequestProps { + visible?: boolean; + refreshDisabled?: boolean; + listHeight?: number; + className?: string; + onListEmpty?: () => void; +} + +const FIRST_PAGE = 0; +const PAGE_SIZE = 40; +const PREFIX = 'job-manage-list'; +const log = logWithPrefix(PREFIX); + +function JobManageList(props: IJobManageListProps) { + const { className, listHeight, refreshDisabled, visible = true, status, onListEmpty } = props; + const [refreshing, setRefreshing] = useState(false); + const [hasMore, setHasMore] = useState(true); + const [loadingMore, setLoadingMore] = useState(false); + const [loadMoreError, setLoadMoreError] = useState(false); + const [dataList, setDataList] = useState([]); + const currentPage = useRef(FIRST_PAGE); + const requestProps = useRef({}); + const prevRequestProps = useRef({}); + const onListEmptyRef = useRef(onListEmpty); + + const handleRefresh = useCallback(async () => { + log('start pull refresh'); + try { + setRefreshing(true); + setLoadMoreError(false); + const { page, hasMore: more, jobResults } = await requestData({ ...requestProps.current, page: 1 }); + setHasMore(more); + setDataList(jobResults); + currentPage.current = page; + !jobResults.length && onListEmptyRef.current?.(); + log('pull refresh success'); + } catch (e) { + setDataList([]); + setHasMore(false); + setLoadMoreError(true); + currentPage.current = FIRST_PAGE; + log('pull refresh failed'); + } finally { + setRefreshing(false); + } + }, []); + + const handleLoadMore = useCallback(async () => { + log('start load more', hasMore); + if (!hasMore) { + return; + } + setLoadMoreError(false); + setLoadingMore(true); + try { + const { + page, + hasMore: more, + jobResults, + } = await requestData({ ...requestProps.current, page: currentPage.current + 1 }); + setDataList([...dataList, ...jobResults]); + setHasMore(more); + currentPage.current = page; + log('load more success'); + } catch (e) { + setLoadMoreError(true); + log('load more failed'); + } finally { + setLoadingMore(false); + } + }, [dataList, currentPage, hasMore]); + + useEffect(() => { + onListEmptyRef.current = onListEmpty; + }, [onListEmpty]); + + useEffect(() => { + log('request params changed'); + requestProps.current = { status: status, pageSize: PAGE_SIZE }; + }, [status]); + + // 初始化数据&配置变更后刷新数据 + useEffect(() => { + // 相比前一次可见时没有数据变更时,不再重新请求 + if (isEqual(prevRequestProps.current, requestProps.current)) { + log('visible/city changed, but request params not change, ignore'); + return; + } + // 列表不可见时,先不做处理 + if (!visible) { + log('visible/city changed, but is not visible, only clear list'); + return; + } + + prevRequestProps.current = requestProps.current; + const refresh = async () => { + log('visible/city changed, start refresh list data'); + try { + setDataList([]); + setLoadingMore(true); + setLoadMoreError(false); + const { page, hasMore: more, jobResults } = await requestData({ ...requestProps.current, page: 1 }); + setHasMore(more); + setDataList(jobResults); + currentPage.current = page; + !jobResults.length && onListEmptyRef.current?.(); + } catch (e) { + setDataList([]); + setHasMore(false); + setLoadMoreError(true); + currentPage.current = FIRST_PAGE; + } finally { + log('visible/city changed, refresh list data end'); + setLoadingMore(false); + } + }; + refresh(); + }, [visible, status]); + + useEffect(() => { + Taro.eventCenter.on(EventName.COMPANY_JOB_PUBLISH_CHANGED, handleRefresh); + return () => { + Taro.eventCenter.off(EventName.COMPANY_JOB_PUBLISH_CHANGED, handleRefresh); + }; + }, [handleRefresh]); + + // log('render', `hasMore: ${hasMore}, loadingMore: ${loadingMore}, refreshing: ${refreshing}`); + + return ( + + + {dataList.map(item => ( + + ))} + + + + ); +} + +export default JobManageList; diff --git a/src/components/job-picker/index.less b/src/components/job-picker/index.less new file mode 100644 index 0000000..d60de5c --- /dev/null +++ b/src/components/job-picker/index.less @@ -0,0 +1,47 @@ +@import '@/styles/variables.less'; + +.job-type-picker { + background: #FFFFFF; + + &__groups-container { + padding: 24px; + } + + &__group { + margin-top: 8px; + } + + &__group-title { + font-size: 28px; + line-height: 40px; + font-weight: 400; + } + + &__group-items-container { + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin-top: 16px; + } + + &__group-item { + min-width: 158px; + height: 64px; + font-size: 28px; + padding: 0 19px; + margin-right: 16px; + margin-bottom: 24px; + box-sizing: border-box; + border-radius: 34px; + line-height: 64px; + font-weight: 400; + text-align: center; + color: @blColor; + background: #F6F6F6; + + &.selected { + color: @blHighlightColor; + background: @blHighlightBg; + } + } +} \ No newline at end of file diff --git a/src/components/job-picker/index.tsx b/src/components/job-picker/index.tsx new file mode 100644 index 0000000..2c49d02 --- /dev/null +++ b/src/components/job-picker/index.tsx @@ -0,0 +1,90 @@ +import classNames from 'classnames'; +import { useState } from 'react'; + +import PickerToolbar from '@/components/picker-toolbar'; +import { EMPLOY_TYPE_TITLE_MAP, EmployType } from '@/constants/job'; +import Toast from '@/utils/toast'; + +import './index.less'; + +interface IProps { + onConfirm: (employType: EmployType) => void; +} + +interface IGroupProps { + name: string; + types: string[]; + typeTitleMap: Record; + selectTypes: string[]; + onClickItem: (item: string) => void; +} + +const PREFIX = 'job-type-picker'; + +const TypeGroup = (props: IGroupProps) => { + const { name, types, selectTypes, typeTitleMap, onClickItem } = props; + return ( +
+
{name}
+
+ {types.map(type => ( +
onClickItem(type)} + className={classNames(`${PREFIX}__group-item`, { selected: selectTypes.includes(type) })} + > + {typeTitleMap[type]} +
+ ))} +
+
+ ); +}; + +function JobPicker(props: IProps) { + const [selectedEmployTypes, setSelectedEmployTypes] = useState([EmployType.Full, EmployType.Part]); + const { onConfirm } = props; + + const handleClickEmployType = (clickType: EmployType) => { + if (selectedEmployTypes.includes(clickType)) { + setSelectedEmployTypes(selectedEmployTypes.filter(type => type !== clickType)); + } else { + setSelectedEmployTypes(selectedEmployTypes.concat([clickType])); + } + }; + + const handleClickReset = () => { + setSelectedEmployTypes([EmployType.Full, EmployType.Part]); + }; + + const handleClickConfirm = () => { + if (!selectedEmployTypes.length) { + Toast.error('至少选择一个'); + return; + } + const newEmployType = selectedEmployTypes.length === 1 ? selectedEmployTypes[0] : EmployType.All; + onConfirm(newEmployType); + }; + + return ( +
+
+ +
+ +
+ ); +} + +export default JobPicker; diff --git a/src/components/job-recommend-list/index.less b/src/components/job-recommend-list/index.less new file mode 100644 index 0000000..a907278 --- /dev/null +++ b/src/components/job-recommend-list/index.less @@ -0,0 +1,44 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.job-recommend-list { + &__header { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + margin: 32px 0; + } + + &__header-left-line, + &__header-right-line { + width: 88px; + height: 1px; + } + + &__header-left-line { + background: linear-gradient(90deg, rgba(109, 61, 245, 0) 0%, #6D3DF5 100%); + } + + &__header-right-line { + background: linear-gradient(90deg, #6D3DF5 0%, rgba(109, 61, 245, 0) 100%); + } + + &__header-title { + font-size: 32px; + line-height: 48px; + font-weight: 500; + color: @blHighlightColor; + margin: 0 16px; + } + + &__header-icon { + width: 40px; + height: 40px; + margin-left: 16px; + } + + &__more-button { + .button(@height: 80px; @fontSize: 32px; @fontWeight: 500; @borderRadius: 44px;); + } +} \ No newline at end of file diff --git a/src/components/job-recommend-list/index.tsx b/src/components/job-recommend-list/index.tsx new file mode 100644 index 0000000..95cf550 --- /dev/null +++ b/src/components/job-recommend-list/index.tsx @@ -0,0 +1,83 @@ +import { Button, Image } from '@tarojs/components'; + +import { List } from '@taroify/core'; +import classNames from 'classnames'; +import { useCallback, useEffect, useRef, useState } from 'react'; + +import JobCard from '@/components/job-card'; +import ListPlaceholder from '@/components/list-placeholder'; +import { PageUrl } from '@/constants/app'; +import { JobInfo, GetJobsRequest } from '@/types/job'; +import { logWithPrefix } from '@/utils/common'; +import { requestMyRecommendJobList } from '@/utils/job'; +import { switchTab } from '@/utils/route'; + +import './index.less'; + +interface IRequestProps extends Partial {} + +export interface IJobListProps extends IRequestProps { + className?: string; +} + +const PAGE_SIZE = 10; +const PREFIX = 'job-recommend-list'; +const log = logWithPrefix(PREFIX); + +function JobRecommendList(props: IJobListProps) { + const { className } = props; + const [loading, setLoading] = useState(false); + const [loadError, setLoadError] = useState(false); + const [dataList, setDataList] = useState([]); + const requestProps = useRef({}); + + const handleClickAllJob = useCallback(() => { + switchTab(PageUrl.Job); + }, []); + + useEffect(() => { + requestProps.current = { page: 1, pageSize: PAGE_SIZE }; + }, []); + + useEffect(() => { + const refresh = async () => { + log('start request list data'); + try { + setDataList([]); + setLoading(true); + setLoadError(false); + const { jobResults = [] } = await requestMyRecommendJobList({ ...requestProps.current }); + setDataList(jobResults); + } catch (e) { + setDataList([]); + setLoadError(true); + } finally { + log('request list data end'); + setLoading(false); + } + }; + refresh(); + }, []); + + return ( +
+
+
+ +
为你推荐附近通告
+
+
+ + {dataList.map(item => ( + + ))} + + + +
+ ); +} + +export default JobRecommendList; diff --git a/src/components/list-placeholder/index.less b/src/components/list-placeholder/index.less new file mode 100644 index 0000000..e69de29 diff --git a/src/components/list-placeholder/index.tsx b/src/components/list-placeholder/index.tsx new file mode 100644 index 0000000..8443681 --- /dev/null +++ b/src/components/list-placeholder/index.tsx @@ -0,0 +1,33 @@ +import { List, Loading } from '@taroify/core'; +import { ReactNode } from 'react'; + +import './index.less'; + +interface IPlaceholderProps { + hasMore: boolean; + loadingMore: boolean; + loadMoreError: boolean; + noMoreText: ReactNode; + loadMoreErrorText: ReactNode; +} + +function ListPlaceholder(props: Partial) { + const { hasMore, loadingMore, loadMoreError, noMoreText, loadMoreErrorText } = props; + + let content: ReactNode = ''; + if (loadingMore) { + content = 加载中...; + } else if (loadMoreError) { + content = loadMoreErrorText ?? '加载失败,请下拉刷新重试'; + } else if (!hasMore) { + content = noMoreText ?? '没有更多了'; + } + + if (!content) { + return null; + } + + return {content}; +} + +export default ListPlaceholder; diff --git a/src/components/loading-dialog/index.less b/src/components/loading-dialog/index.less new file mode 100644 index 0000000..769bd32 --- /dev/null +++ b/src/components/loading-dialog/index.less @@ -0,0 +1,52 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.loading-dialog { + + &__dialog-content { + .flex-column(); + + @keyframes spin { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } + } + + &__icon-wrapper { + position: relative; + width: 188px; + height: 188px; + } + + &__icon-bg { + width: 100%; + height: 100%; + padding: 8px; + background: conic-gradient(#6D3DF5, 30%, #ECE5FF); + border-radius: 50%; + animation: spin 1.5s linear infinite reverse; + } + + &__icon { + width: 188px; + height: 188px; + border-radius: 50%; + background: #F2F2F2; + position: absolute; + top: 8px; + left: 8px; + } + + &__title { + font-size: 36px; + font-weight: 500; + line-height: 58px; + margin-top: 24px; + } + } + +} \ No newline at end of file diff --git a/src/components/loading-dialog/index.tsx b/src/components/loading-dialog/index.tsx new file mode 100644 index 0000000..5bf82b3 --- /dev/null +++ b/src/components/loading-dialog/index.tsx @@ -0,0 +1,35 @@ +import { Image } from '@tarojs/components'; + +import { Dialog } from '@taroify/core'; + +import './index.less'; + +interface IProps { + open: boolean; + text: string; +} + +const PREFIX = 'loading-dialog'; + +function LoadingDialog(props: IProps) { + const { open, text } = props; + return ( + + +
+
+
+ +
+
{text}
+
+ +
+ ); +} + +export default LoadingDialog; diff --git a/src/components/location-dialog/index.less b/src/components/location-dialog/index.less new file mode 100644 index 0000000..2a69a6a --- /dev/null +++ b/src/components/location-dialog/index.less @@ -0,0 +1,38 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.location-dialog { + &__container { + .flex-column(); + } + + &__title { + font-size: 36px; + font-weight: 500; + line-height: 56px; + color: @blColor; + } + + &__confirm-button { + .button(@width: 360px, @height: 72px, @fontSize: 28px, @fontWeight: 400, @borderRadius: 44px); + margin-top: 40px; + } + + // &__cancel-button { + // min-width: fit-content; + // font-size: 28px; + // line-height: 32px; + // color: @blHighlightColor; + // background: transparent; + // border: none; + // margin-top: 40px; + + // &::after { + // border-color: transparent + // } + // } + + &__checkbox { + margin-top: 40px; + } +} diff --git a/src/components/location-dialog/index.tsx b/src/components/location-dialog/index.tsx new file mode 100644 index 0000000..c75bee3 --- /dev/null +++ b/src/components/location-dialog/index.tsx @@ -0,0 +1,47 @@ +import { Button } from '@tarojs/components'; + +import { Dialog } from '@taroify/core'; +import { useCallback, useState } from 'react'; + +import { ProtocolPrivacyCheckbox } from '@/components/protocol-privacy'; +import Toast from '@/utils/toast'; + +import './index.less'; + +interface IProps { + open: boolean; + onClick: () => void; + onClose: () => void; +} + +const PREFIX = 'location-dialog'; + +export default function LocationDialog(props: IProps) { + const { open, onClick, onClose } = props; + const [checked, setChecked] = useState(false); + + const handleTipCheck = useCallback(() => { + Toast.info('请先阅读并同意协议'); + }, []); + + return ( + + +
+
{`我们需要获取您的位置信息\n以便推荐附近的通告或主播`}
+ {!checked && ( + + )} + {checked && ( + + )} + +
+
+
+ ); +} diff --git a/src/components/login-button/index.less b/src/components/login-button/index.less new file mode 100644 index 0000000..3b6869b --- /dev/null +++ b/src/components/login-button/index.less @@ -0,0 +1,4 @@ +.login-button { + margin: 0; + padding: 0; +} \ No newline at end of file diff --git a/src/components/login-button/index.tsx b/src/components/login-button/index.tsx new file mode 100644 index 0000000..33aa42f --- /dev/null +++ b/src/components/login-button/index.tsx @@ -0,0 +1,52 @@ +import { Button, ButtonProps } from '@tarojs/components'; + +import classNames from 'classnames'; +import { useCallback, useState } from 'react'; + +import LoginDialog from '@/components/login-dialog'; +import useUserInfo from '@/hooks/use-user-info'; +import { isNeedLogin } from '@/utils/user'; + +import './index.less'; + +export enum BindPhoneStatus { + Success, + Cancel, + Error, +} + +export interface ILoginButtonProps extends ButtonProps { + needPhone?: boolean; +} + +const PREFIX = 'login-button'; + +function LoginButton(props: ILoginButtonProps) { + const { className, children, needPhone, onClick, ...otherProps } = props; + const userInfo = useUserInfo(); + const [visible, setVisible] = useState(false); + const needLogin = isNeedLogin(userInfo); + + const onSuccess = useCallback( + e => { + setVisible(false); + onClick?.(e); + }, + [onClick] + ); + + return ( + <> + + {visible && setVisible(false)} onSuccess={onSuccess} needPhone={needPhone} />} + + ); +} + +export default LoginButton; diff --git a/src/components/login-dialog/index.less b/src/components/login-dialog/index.less new file mode 100644 index 0000000..dd69a63 --- /dev/null +++ b/src/components/login-dialog/index.less @@ -0,0 +1,38 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.login-dialog { + &__container { + .flex-column(); + } + + &__title { + font-size: 36px; + font-weight: 500; + line-height: 56px; + color: @blColor; + } + + &__confirm-button { + .button(@width: 360px, @height: 72px, @fontSize: 28px, @fontWeight: 400, @borderRadius: 44px); + margin-top: 40px; + } + + &__cancel-button { + min-width: fit-content; + font-size: 28px; + line-height: 32px; + color: @blHighlightColor; + background: transparent; + border: none; + margin-top: 40px; + + &::after { + border-color: transparent + } + } + + &__checkbox { + margin-top: 40px; + } +} diff --git a/src/components/login-dialog/index.tsx b/src/components/login-dialog/index.tsx new file mode 100644 index 0000000..3e4b26c --- /dev/null +++ b/src/components/login-dialog/index.tsx @@ -0,0 +1,58 @@ +import { Button } from '@tarojs/components'; + +import { Dialog } from '@taroify/core'; +import { useCallback, useState } from 'react'; + +import PhoneButton, { IPhoneButtonProps } from '@/components/phone-button'; +import { ProtocolPrivacyCheckbox } from '@/components/protocol-privacy'; +import Toast from '@/utils/toast'; + +import './index.less'; + +interface IProps { + title?: string; + onCancel: () => void; + needPhone?: IPhoneButtonProps['needPhone']; + onSuccess?: IPhoneButtonProps['onSuccess']; + onBindPhone?: IPhoneButtonProps['onBindPhone']; +} + +const PREFIX = 'login-dialog'; + +export default function LoginDialog(props: IProps) { + const { title = '使用播络服务前,请先登录', needPhone, onSuccess, onCancel, onBindPhone } = props; + const [checked, setChecked] = useState(false); + + const handleTipCheck = useCallback(() => { + Toast.info('请先阅读并同意协议'); + }, []); + + return ( + + +
+
{title}
+ {!checked && ( + + )} + {checked && ( + + 登录 + + )} + + +
+
+
+ ); +} diff --git a/src/components/login-guide/index.less b/src/components/login-guide/index.less new file mode 100644 index 0000000..6dc3e62 --- /dev/null +++ b/src/components/login-guide/index.less @@ -0,0 +1,50 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.login-content { + &__container { + .flex-column(); + } + + &__title { + font-size: 36px; + font-weight: 500; + line-height: 56px; + color: @blColor; + } + + &__confirm-button { + .button(@width: 360px, @height: 72px, @fontSize: 28px, @fontWeight: 400, @borderRadius: 44px); + margin-top: 40px; + } + + &__cancel-button { + min-width: fit-content; + font-size: 28px; + line-height: 32px; + color: @blHighlightColor; + background: transparent; + border: none; + margin-top: 40px; + + &::after { + border-color: transparent + } + } + + &__checkbox { + margin-top: 40px; + } +} + +.login-guide { + display: flex; + flex-direction: column; + align-items: center; + z-index: 1001; + background: #FFFFFF; + border-top-left-radius: 24px; + border-top-right-radius: 24px; + padding-top: 48px; + padding-bottom: 64px; +} diff --git a/src/components/login-guide/index.tsx b/src/components/login-guide/index.tsx new file mode 100644 index 0000000..deeb6ca --- /dev/null +++ b/src/components/login-guide/index.tsx @@ -0,0 +1,119 @@ +import { Button } from '@tarojs/components'; + +import { Popup } from '@taroify/core'; +import { useCallback, useEffect, useState } from 'react'; + +import PhoneButton, { BindPhoneStatus, IPhoneButtonProps } from '@/components/phone-button'; +import { ProtocolPrivacyCheckbox } from '@/components/protocol-privacy'; +import SafeBottomPadding from '@/components/safe-bottom-padding'; +import useUserInfo from '@/hooks/use-user-info'; +import { logWithPrefix, sleep } from '@/utils/common'; +import { waitLocationAuthorizeHidden } from '@/utils/location'; +import Toast from '@/utils/toast'; +import { shouldShowLoginGuide } from '@/utils/user'; + +import './index.less'; + +interface IContentProps extends Pick { + onCancel: () => void; +} + +interface IProps { + disabled: boolean; + onAfterBind?: () => void; +} + +const PREFIX = 'login-content'; +const PREFIX_GUIDE = 'login-guide'; +const log = logWithPrefix(PREFIX_GUIDE); + +function LoginContent(props: IContentProps) { + const { onCancel, onBindPhone } = props; + const [checked, setChecked] = useState(false); + + const handleClose = useCallback(() => onCancel(), [onCancel]); + + const handleTipCheck = useCallback(() => { + Toast.info('请先阅读并同意协议'); + }, []); + + return ( +
+
使用播络服务前,请先登录
+ {!checked && ( + + )} + {checked && ( + + 登录 + + )} + + +
+ ); +} + +export function LoginGuide(props: IProps) { + const { disabled = false, onAfterBind } = props; + const userInfo = useUserInfo(); + const [open, setOpen] = useState(false); + + const handleBind = useCallback( + (status: BindPhoneStatus) => { + status === BindPhoneStatus.Success && onAfterBind?.(); + status === BindPhoneStatus.Success && setOpen(false); + }, + [onAfterBind] + ); + + const handleClose = useCallback(() => setOpen(false), []); + + useEffect(() => { + if (disabled || !shouldShowLoginGuide(userInfo)) { + return; + } + let effectCleaned = false; + const showGuide = async () => { + await sleep(1); + await waitLocationAuthorizeHidden(); + if (effectCleaned) { + log('ignore login guide, effect changed'); + return; + } + setOpen(true); + log('open login guide'); + }; + showGuide(); + return () => { + effectCleaned = true; + }; + }, [disabled, userInfo]); + + useEffect(() => { + if (disabled) { + log('hide login guide by disabled'); + setOpen(false); + } + }, [disabled]); + + if (!open) { + return null; + } + + return ( + + + + + ); +} diff --git a/src/components/material-card/index.less b/src/components/material-card/index.less new file mode 100644 index 0000000..7b9c603 --- /dev/null +++ b/src/components/material-card/index.less @@ -0,0 +1,117 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.material-card { + padding: 32px 24px; + border-radius: 16px; + background: #FFFFFF; + box-sizing: border-box; + + &__header { + .flex-row(); + justify-content: space-between; + + &__left, + &__right { + .flex-row(); + } + + &__title { + font-size: 32px; + line-height: 40px; + font-weight: 400; + color: @blColor; + } + + &__progress { + font-size: 28px; + line-height: 32px; + font-weight: 400; + color: @blHighlightColor; + margin-left: 8px; + } + + &__status { + font-size: 28px; + line-height: 32px; + font-weight: 400; + color: @blColorG1; + margin-right: 4px; + } + + &__icon { + .flex-row(); + height: 48px; + font-size: 32px; + line-height: 48px; + color: #969799; + } + } + + &__body { + width: 100%; + height: 156px; + margin-top: 24px; + .flex-column(); + justify-content: center; + } + + &__placeholder { + height: 100%; + .flex-column(); + justify-content: center; + + &__tips { + font-size: 28px; + line-height: 32px; + font-weight: 400; + color: @blColorG1; + } + + &__create-button { + .button(); + font-size: 28px; + line-height: 32px; + font-weight: 400; + color: @blHighlightColor; + margin-top: 22px; + background: transparent; + border-radius: 0; + } + } + + &__scroll-view { + position: relative; + width: 100%; + height: 100%; + .flex-row(); + + &::-webkit-scrollbar { + display: none; + } + + &::after { + content: ''; + position: absolute; + right: 0; + width: 102px; + height: 100%; + background: linear-gradient(91.41deg, rgba(255, 255, 255, 0) 1.86%, #FFFFFF 99.47%); + } + } + + &__cover-list { + height: 100%; + .flex-row(); + } + + &__cover-image { + width: 120px; + height: 100%; + margin-right: 24px; + // 不知道为啥高度不对,可能 scroll-view 默认底部是滚动条高度? + margin-top: 38px; + border-radius: 8px; + } + +} \ No newline at end of file diff --git a/src/components/material-card/index.tsx b/src/components/material-card/index.tsx new file mode 100644 index 0000000..7003376 --- /dev/null +++ b/src/components/material-card/index.tsx @@ -0,0 +1,145 @@ +import { Image, ScrollView } from '@tarojs/components'; +import Taro from '@tarojs/taro'; + +import { Loading } from '@taroify/core'; +import { ArrowRight } from '@taroify/icons'; +import classNames from 'classnames'; +import { useCallback, useEffect, useRef, useState } from 'react'; + +import LoginButton from '@/components/login-button'; +import { EventName, PageUrl } from '@/constants/app'; +import { CollectEventName, ReportEventId } from '@/constants/event'; +import useUserInfo from '@/hooks/use-user-info'; +import { MaterialProfile } from '@/types/material'; +import { logWithPrefix } from '@/utils/common'; +import { collectEvent, reportEvent } from '@/utils/event'; +import { requestProfileDetail, sortVideos } from '@/utils/material'; +import { navigateTo } from '@/utils/route'; +import Toast from '@/utils/toast'; +import { isValidUserInfo } from '@/utils/user'; + +import './index.less'; + +interface IProps { + className?: string; +} + +const PREFIX = 'material-card'; +const log = logWithPrefix(PREFIX); +const realtimeLogger = Taro.getRealtimeLogManager(); +realtimeLogger.tag(PREFIX); + +function MaterialCard(props: IProps) { + const { className } = props; + const userInfo = useUserInfo(); + const [loading, setLoading] = useState(true); + const [profile, setProfile] = useState(null); + const refreshRef = useRef((_f?: boolean) => { }); + const hasMaterial = !!profile; + + const handleGoCreateProfile = useCallback(() => { + reportEvent(ReportEventId.CLICK_GO_TO_CREATE_MATERIAL); + navigateTo(PageUrl.MaterialUploadVideo); + }, []); + + const handleGoProfile = useCallback(() => { + if (!hasMaterial) { + realtimeLogger.info('handleGoProfile noMaterial') + return; + } + navigateTo(PageUrl.MaterialProfile).catch(err => { + realtimeLogger.error('handleGoProfile Failed', err); + }); + }, [hasMaterial]); + + useEffect(() => { + refreshRef.current = async (force: boolean = false) => { + collectEvent(CollectEventName.MATERIAL_CARD_VIEW, { + status: 'refresh', + info: { force, isCreateResume: userInfo.isCreateResume }, + }); + setLoading(true); + if (!userInfo.isCreateResume && !force) { + log('refresh break by is not create resume'); + setLoading(false); + return; + } + try { + const profileDetail = await requestProfileDetail(); + if (!profileDetail) { + realtimeLogger.info('getProfileDetail no profileDetail') + } + setProfile(profileDetail); + } catch (e) { + realtimeLogger.error('getProfileDetail Failed', e); + Toast.error('加载失败'); + } + setLoading(false); + }; + }, [userInfo]); + + useEffect(() => { + if (!isValidUserInfo(userInfo)) { + return; + } + refreshRef.current?.(true); + }, [userInfo]); + + useEffect(() => { + const callback = async () => { + refreshRef.current?.(true); + }; + Taro.eventCenter.on(EventName.CREATE_PROFILE, callback); + return () => { + Taro.eventCenter.off(EventName.CREATE_PROFILE, callback); + }; + }, [userInfo]); + + return ( +
+
+
+
我的模卡
+ {/* {profile && ( +
{`完成度${Math.min((profile.progressBar || 0) * 100, 100)}%`}
+ )} */} +
+ {profile && ( +
+ {/*
{profile?.isOpen ? '开放中' : '关闭'}
*/} + +
+ )} +
+
+ {!loading && !hasMaterial && ( +
+
创建模卡更容易被老板挑中哦
+ + 去创建 + +
+ )} + {!loading && hasMaterial && ( + +
+ {sortVideos(profile?.materialVideoInfoList || []).map(video => ( + + ))} +
+
+ )} + {loading && } +
+
+ ); +} + +export default MaterialCard; diff --git a/src/components/material-guide/index.less b/src/components/material-guide/index.less new file mode 100644 index 0000000..e69de29 diff --git a/src/components/material-guide/index.tsx b/src/components/material-guide/index.tsx new file mode 100644 index 0000000..da1cdc2 --- /dev/null +++ b/src/components/material-guide/index.tsx @@ -0,0 +1,43 @@ +import { useCallback } from 'react'; + +import CommonDialog from '@/components/common-dialog'; +import { PageUrl } from '@/constants/app'; +import { ReportEventId } from '@/constants/event'; +import { reportEvent } from '@/utils/event'; +import { navigateTo } from '@/utils/route'; + +import './index.less'; + +interface IProps { + onClose: () => void; +} + +const PREFIX = 'material-guide'; + +function MaterialGuide(props: IProps) { + const { onClose } = props; + + const handleConfirm = useCallback(() => { + reportEvent(ReportEventId.VIEW_MATERIAL_GUIDE); + navigateTo(PageUrl.MaterialUploadVideo); + onClose(); + }, [onClose]); + + // useEffect(() => { + // updateLastMaterialGuideTime(); + // }, []); + + return ( + + ); +} + +export default MaterialGuide; diff --git a/src/components/material-manage-popup/index.less b/src/components/material-manage-popup/index.less new file mode 100644 index 0000000..8bac357 --- /dev/null +++ b/src/components/material-manage-popup/index.less @@ -0,0 +1,42 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.material-manage-popup { + .flex-column(); + + &__popup { + background: #FFFFFF; + border-top-left-radius: 24px; + border-top-right-radius: 24px; + } + + &__header { + .flex-column(); + margin-top: 36px; + } + + &__title { + font-size: 32px; + line-height: 32px; + font-weight: 500; + color: @blColor; + } + + &__tips { + font-size: 24px; + line-height: 36px; + font-weight: 400; + color: @blColorG1; + margin-top: 16px; + } + + &__select { + width: 100%; + margin-top: 40px; + } + + &__btn { + .button(@width: 360px; @height: 72px; @fontSize: 28px; @borderRadius: 44px); + margin-top: 32px; + } +} \ No newline at end of file diff --git a/src/components/material-manage-popup/index.tsx b/src/components/material-manage-popup/index.tsx new file mode 100644 index 0000000..4b3f4fd --- /dev/null +++ b/src/components/material-manage-popup/index.tsx @@ -0,0 +1,58 @@ +import { Button } from '@tarojs/components'; + +import { Popup } from '@taroify/core'; +import { useCallback, useEffect, useState } from 'react'; + +import SafeBottomPadding from '@/components/safe-bottom-padding'; +import Select from '@/components/select'; +import { MaterialStatus } from '@/constants/material'; +import { MaterialProfile } from '@/types/material'; + +import './index.less'; + +interface IProps { + open: boolean; + value: MaterialStatus; + onSave: (newValue: MaterialProfile['isOpen']) => void; + onClose: () => void; +} + +const PREFIX = 'material-manage-popup'; +const OPTIONS = [ + { label: '开放', value: MaterialStatus.Open }, + { label: '关闭', value: MaterialStatus.Close }, +]; + +function MaterialManagePopup(props: IProps) { + const { open, value = MaterialStatus.Open, onSave, onClose } = props; + const [currentValue, setCurrentValue] = useState(value); + + const handleSelect = useCallback((v: MaterialStatus) => setCurrentValue(v), []); + + const handleSave = useCallback(() => { + onSave(currentValue === MaterialStatus.Open); + onClose(); + }, [currentValue, onSave, onClose]); + + useEffect(() => { + setCurrentValue(value); + }, [value]); + + return ( + +
+
+
模卡开放状态
+
开放模卡给企业查看后,可以获得更多求职机会
+
+ +
+
+ + 选为封面 + +
+ 删除 +
+
+ + )} + {isTemp && ( + + {`视频不能超过1000M + 视频若太大加载较慢,请耐心等待`} + + )} +
+
+ ); +} + +export default MaterialVideoCard; diff --git a/src/components/message-card/index.less b/src/components/message-card/index.less new file mode 100644 index 0000000..2d8fd2e --- /dev/null +++ b/src/components/message-card/index.less @@ -0,0 +1,85 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.message-card { + position: relative; + width: 100%; + .flex-row(); + padding: 20px 32px; + box-sizing: border-box; + background: #FFF; + + &::after { + content: ""; + height: 2px; + background: #00000026; + position: absolute; + top: 0; + left: calc(32px + 90px + 24px); + right: 0; + } + + &:first-child { + &::after { + height: 0; + } + } + + &__avatar-container { + position: relative; + } + + &__avatar { + width: 90px; + height: 90px; + border-radius: 50%; + } + + &__unread { + position: absolute; + top: 0; + right: 0; + min-width: calc(32px - 8px); + height: 32px; + border-radius: 32px; + padding: 4px 8px; + font-size: 24px; + font-weight: 400; + color: #FFFFFF; + text-align: center; + background: #EB5953; + transform: translate3d(20%, -50%, 0); + } + + &__body-container { + flex: 1; + .flex-column(); + align-items: flex-start; + margin-left: 24px; + } + + &__name { + font-size: 32px; + line-height: 48px; + font-weight: 400; + color: #000000; + } + + &__content { + max-width: 78vw; + font-size: 28px; + line-height: 40px; + font-weight: 400; + color: #8D8E99; + margin-top: 4px; + .noWrap(); + } + + &__time { + font-size: 20px; + line-height: 32px; + font-weight: 400; + color: #8D8E99; + margin-top: 6px; + } +} \ No newline at end of file diff --git a/src/components/message-card/index.tsx b/src/components/message-card/index.tsx new file mode 100644 index 0000000..a59596a --- /dev/null +++ b/src/components/message-card/index.tsx @@ -0,0 +1,42 @@ +import { Image } from '@tarojs/components'; + +import { useCallback } from 'react'; + +import { PageUrl } from '@/constants/app'; +import { MainMessage } from '@/types/message'; +import { navigateTo } from '@/utils/route'; +import { formatTime } from '@/utils/time'; + +import './index.less'; + +interface IProps { + data: MainMessage; +} + +const PREFIX = 'message-card'; + +function MessageCard(props: IProps) { + const { data } = props; + + const handleClick = useCallback(() => navigateTo(PageUrl.MessageChat, { chatId: data.chatId }), [data]); + + return ( +
+
+ + {!!data.unReadMsgCount &&
{Math.min(data.unReadMsgCount, 999)}
} +
+
+
{data.toUserName}
+
{data.lastContactMsgContent}
+
{formatTime(data.lastContactTime, 'MM-DD')}
+
+
+ ); +} + +export default MessageCard; diff --git a/src/components/message-chat/base/index.less b/src/components/message-chat/base/index.less new file mode 100644 index 0000000..5866cc7 --- /dev/null +++ b/src/components/message-chat/base/index.less @@ -0,0 +1,54 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.base-message { + width: 100%; + .flex-row(); + align-items: flex-start; + margin-top: 40px; + padding: 0 32px; + box-sizing: border-box; + + &.is-sender { + flex-direction: row-reverse; + } + + &__avatar { + width: 80px; + height: 80px; + border-radius: 50%; + } + + &__content-container { + flex: 1; + .flex-column(); + align-items: flex-start; + margin: 0 16px; + + .is-sender & { + align-items: flex-end; + } + } + + &__content { + font-size: 28px; + line-height: 40px; + font-weight: 400; + color: #1D2129; + background: #D9D9D9; + padding: 20px 24px; + border-radius: 20px; + } + + &__status { + font-size: 20px; + line-height: 28px; + font-weight: 400; + color: @blHighlightColor; + margin-top: 8px; + + &.done { + color: #8D8E99; + } + } +} \ No newline at end of file diff --git a/src/components/message-chat/base/index.tsx b/src/components/message-chat/base/index.tsx new file mode 100644 index 0000000..744638e --- /dev/null +++ b/src/components/message-chat/base/index.tsx @@ -0,0 +1,66 @@ +import { Image } from '@tarojs/components'; + +import classNames from 'classnames'; +import { PropsWithChildren, useEffect, useState, useCallback } from 'react'; +import { MaterialViewSource } from '@/constants/material'; + +import useUserInfo from '@/hooks/use-user-info'; +import { IChatMessage } from '@/types/message'; +import { getScrollItemId } from '@/utils/common'; +import { navigateTo } from '@/utils/route'; +import { PageUrl } from '@/constants/app'; + +import './index.less'; + +export interface IBaseMessageProps { + id: string; + message: IChatMessage; +} + +export interface IUserMessageProps extends PropsWithChildren, IBaseMessageProps { + isRead?: boolean; +} + +const PREFIX = 'base-message'; + +function BaseMessage(props: IUserMessageProps) { + const { id, message, isRead: isReadProps, children } = props; + const { userId } = useUserInfo(); + const [isRead, setIsRead] = useState(message.isRead); + const isSender = message.senderUserId === userId; + + // useEffect(() => { + // if (isSender) { + // return; + // } + // // 对方发的消息,拉取到消息后,后端会主动已读,这里延迟模拟下 + // const timer = setTimeout(() => setIsRead(true), 1200); + // return () => clearTimeout(timer); + // }, [isSender]); + const handleClick = useCallback( + () => navigateTo(PageUrl.MaterialView, { resumeId: message.jobId, source: MaterialViewSource.Chat }), + [message.jobId] + ); + useEffect(() => { + if (isRead) { + return; + } + isReadProps && setIsRead(true); + }, [isRead, isReadProps]); + + return ( +
+ +
+ {children} +
{isRead ? '已读' : '未读'}
+
+
+ ); +} + +export default BaseMessage; diff --git a/src/components/message-chat/contact/index.less b/src/components/message-chat/contact/index.less new file mode 100644 index 0000000..3143612 --- /dev/null +++ b/src/components/message-chat/contact/index.less @@ -0,0 +1,50 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.exchange-message { + width: 100%; + .flex-column(); + margin-top: 40px; + + &__content { + padding: 24px 60px; + background: #FFFFFF; + border-radius: 20px; + } + + &__title { + font-size: 28px; + line-height: 40px; + font-weight: 400; + color: @blColor; + } + + &__buttons { + .flex-row(); + justify-content: center; + margin-top: 32px; + } + + &__reject { + .button(@width: 176px; @height: 56px; @fontSize: 28px; @borderRadius: 48px); + border: 2px solid #E0E0E0; + color: @blColor; + background: #FFF; + margin-right: 24px; + } + + &__agree { + .button(@width: 176px; @height: 56px; @fontSize: 28px; @borderRadius: 48px); + } + + &__disable-btn { + .button(@height: 56px; @fontSize: 28px; @borderRadius: 48px); + padding: 0 74px; + color: #C0C0C0; + background: #F0F0F0; + + &:active { + background: #F0F0F0; + } + } +} \ No newline at end of file diff --git a/src/components/message-chat/contact/index.tsx b/src/components/message-chat/contact/index.tsx new file mode 100644 index 0000000..f0418c6 --- /dev/null +++ b/src/components/message-chat/contact/index.tsx @@ -0,0 +1,91 @@ +import { Button } from '@tarojs/components'; + +import { useCallback, useEffect, useState } from 'react'; + +import { IBaseMessageProps } from '@/components/message-chat/base'; +import { MessageActionStatus } from '@/constants/message'; +import useUserInfo from '@/hooks/use-user-info'; +import { getScrollItemId } from '@/utils/common'; +import { posConfirmAction, postAddMessageTimes, requestChatActionStatus } from '@/utils/message'; + +import './index.less'; + +interface IProps extends IBaseMessageProps { + onClick: () => void; +} + +const PREFIX = 'exchange-message'; + +function ContactMessage(props: IProps) { + const { id, message, onClick } = props; + const { userId } = useUserInfo(); + const [status, setStatus] = useState(); + const isSender = message.senderUserId === userId; + + const handleClickReject = useCallback(async () => { + if (isSender || status !== MessageActionStatus.Send) { + return; + } + postAddMessageTimes('click_reject_exchange_contact'); + await posConfirmAction({ actionId: message.actionId, status: false }); + setStatus(MessageActionStatus.Reject); + onClick(); + }, [isSender, status, message.actionId, onClick]); + + const handleClickAgree = useCallback(async () => { + if (isSender || status !== MessageActionStatus.Send) { + return; + } + postAddMessageTimes('click_agree_exchange_contact'); + await posConfirmAction({ actionId: message.actionId, status: true }); + setStatus(MessageActionStatus.Agree); + onClick(); + }, [isSender, status, message.actionId, onClick]); + + useEffect(() => { + const init = async () => { + const res = await requestChatActionStatus(message.actionId); + setStatus(res); + }; + init(); + }, [message.actionId]); + + return ( +
+
+
+ {isSender ? '您已向对方请求交换联系方式' : `${message.senderName}申请交换联系方式,沟通面试`} +
+
+ {isSender && ( + + )} + {!isSender && ( + <> + {(status === MessageActionStatus.Send || !status) && ( + <> + + + + )} + {status === MessageActionStatus.Agree && } + {status === MessageActionStatus.Reject && } + + )} +
+
+
+ ); +} + +export default ContactMessage; diff --git a/src/components/message-chat/index.ts b/src/components/message-chat/index.ts new file mode 100644 index 0000000..4d15cce --- /dev/null +++ b/src/components/message-chat/index.ts @@ -0,0 +1,8 @@ +import ContactMessage from './contact'; +import JobMessage from './job'; +import LocationMessage from './location'; +import MaterialMessage from './material'; +import TextMessage from './text'; +import TimeMessage from './time'; + +export { ContactMessage, JobMessage, LocationMessage, MaterialMessage, TextMessage, TimeMessage }; diff --git a/src/components/message-chat/job/index.less b/src/components/message-chat/job/index.less new file mode 100644 index 0000000..e67155e --- /dev/null +++ b/src/components/message-chat/job/index.less @@ -0,0 +1,29 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.job-message { + width: calc(100% - 64px); + .flex-column(); + align-items: flex-start; + margin: 40px 32px 0; + padding: 20px 24px; + background: #FFFFFF; + border-radius: 20px; + box-sizing: border-box; + + &__title { + font-size: 28px; + line-height: 40px; + font-weight: 500; + color: @blColor; + } + + &__salary { + font-size: 24px; + line-height: 36px; + font-weight: 400; + color: @blColorG2; + margin-top: 8px; + } + +} \ No newline at end of file diff --git a/src/components/message-chat/job/index.tsx b/src/components/message-chat/job/index.tsx new file mode 100644 index 0000000..9202aab --- /dev/null +++ b/src/components/message-chat/job/index.tsx @@ -0,0 +1,38 @@ +import { useCallback } from 'react'; + +import { IBaseMessageProps } from '@/components/message-chat/base'; +import { PageUrl } from '@/constants/app'; +import { IJobMessage } from '@/types/message'; +import { getScrollItemId, safeJsonParse } from '@/utils/common'; +import { getJobSalary } from '@/utils/job'; +import { navigateTo } from '@/utils/route'; + +import './index.less'; + +interface IProps extends IBaseMessageProps {} + +const PREFIX = 'job-message'; + +function JobMessage(props: IProps) { + const { id, message } = props; + const data = safeJsonParse(message.actionObject, null); + + const handleClick = useCallback(() => { + if (!data) { + return; + } + navigateTo(PageUrl.JobDetail, { id: data.id }); + }, [data]); + + if (!data) { + return null; + } + return ( +
+
{data.title}
+
{getJobSalary(data)}
+
+ ); +} + +export default JobMessage; diff --git a/src/components/message-chat/location/index.less b/src/components/message-chat/location/index.less new file mode 100644 index 0000000..19aa802 --- /dev/null +++ b/src/components/message-chat/location/index.less @@ -0,0 +1,45 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.location-message { + &__map-container { + width: 440px; + .flex-column(); + align-items: flex-start; + background: #FFF; + border-radius: 20px; + position: relative; + } + + &__name { + font-size: 28px; + line-height: 40px; + font-weight: 400; + color: @blColor; + margin: 20px 20px 0; + .noWrap(); + } + + &__address { + font-size: 24px; + line-height: 36px; + font-weight: 400; + color: @blColorG1; + margin: 4px 20px 20px; + .noWrap(); + } + + &__map { + width: 100%; + height: 160px; + } + + &__mask { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } + +} \ No newline at end of file diff --git a/src/components/message-chat/location/index.tsx b/src/components/message-chat/location/index.tsx new file mode 100644 index 0000000..0476048 --- /dev/null +++ b/src/components/message-chat/location/index.tsx @@ -0,0 +1,69 @@ +import { Map } from '@tarojs/components'; +import Taro from '@tarojs/taro'; + +import { useCallback } from 'react'; + +import BaseMessage, { IUserMessageProps } from '@/components/message-chat/base'; +import { ILocationMessage } from '@/types/message'; +import { safeJsonParse } from '@/utils/common'; +import Toast from '@/utils/toast'; + +import './index.less'; + +interface IProps extends IUserMessageProps {} + +const PREFIX = 'location-message'; + +function LocationMessage(props: IProps) { + const { message } = props; + const data = safeJsonParse(message.actionObject, null); + + const handleClickMap = useCallback( + (e: React.MouseEvent) => { + e.stopPropagation(); + Taro.openLocation({ + name: data.name, + address: data.address, + longitude: Number(data.longitude), + latitude: Number(data.latitude), + scale: 18, + }); + }, + [data] + ); + + if (!data) { + return null; + } + + return ( + +
+
{data.name}
+
{data.address}
+ Toast.error('地图加载错误')} + /> +
+
+ + ); +} + +export default LocationMessage; diff --git a/src/components/message-chat/material/index.less b/src/components/message-chat/material/index.less new file mode 100644 index 0000000..3715f98 --- /dev/null +++ b/src/components/message-chat/material/index.less @@ -0,0 +1,30 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.material-message { + width: calc(100% - 64px); + .flex-column(); + align-items: flex-start; + margin: 40px 32px 0; + padding: 20px 24px; + background: #FFFFFF; + border-radius: 20px; + box-sizing: border-box; + + &__name { + font-size: 28px; + line-height: 40px; + font-weight: 500; + color: @blColor; + } + + &__basic, + &__categories { + font-size: 24px; + line-height: 36px; + font-weight: 400; + color: @blColorG2; + margin-top: 8px; + } + +} \ No newline at end of file diff --git a/src/components/message-chat/material/index.tsx b/src/components/message-chat/material/index.tsx new file mode 100644 index 0000000..bf6b52c --- /dev/null +++ b/src/components/message-chat/material/index.tsx @@ -0,0 +1,41 @@ +import { useCallback } from 'react'; + +import { IBaseMessageProps } from '@/components/message-chat/base'; +import { PageUrl } from '@/constants/app'; +import { MaterialViewSource } from '@/constants/material'; +import { IMaterialMessage } from '@/types/message'; +import { getScrollItemId, safeJsonParse } from '@/utils/common'; +import { getBasicInfo } from '@/utils/material'; +import { navigateTo } from '@/utils/route'; + +import './index.less'; + +interface IProps extends IBaseMessageProps {} + +const PREFIX = 'material-message'; + +function MaterialMessage(props: IProps) { + const { id, message } = props; + const data = safeJsonParse(message.actionObject, null); + + const handleClick = useCallback(() => { + if (!data) { + return; + } + navigateTo(PageUrl.MaterialView, { resumeId: data.id, source: MaterialViewSource.Chat }); + }, [data]); + + if (!data) { + return null; + } + + return ( +
+
{data.name}
+
{getBasicInfo(data)}
+
{`播过 ${data.workedSecCategoryStr}`}
+
+ ); +} + +export default MaterialMessage; diff --git a/src/components/message-chat/text/index.less b/src/components/message-chat/text/index.less new file mode 100644 index 0000000..352cadd --- /dev/null +++ b/src/components/message-chat/text/index.less @@ -0,0 +1,14 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.text-message { + &__content { + font-size: 28px; + line-height: 40px; + font-weight: 400; + color: #1D2129; + background: #D9D9D9; + padding: 20px 24px; + border-radius: 20px; + } +} \ No newline at end of file diff --git a/src/components/message-chat/text/index.tsx b/src/components/message-chat/text/index.tsx new file mode 100644 index 0000000..876f323 --- /dev/null +++ b/src/components/message-chat/text/index.tsx @@ -0,0 +1,32 @@ +import { Text } from '@tarojs/components'; + +import { useCallback } from 'react'; + +import BaseMessage, { IUserMessageProps } from '@/components/message-chat/base'; +import { copy } from '@/utils/common'; +import Toast from '@/utils/toast'; + +import './index.less'; + +interface IProps extends IUserMessageProps {} + +const PREFIX = 'text-message'; + +function TextMessage(props: IProps) { + const { message } = props; + + const handleLongPress = useCallback(async () => { + await copy(message.content); + Toast.success('复制成功'); + }, [message.content]); + + return ( + + + {message.content} + + + ); +} + +export default TextMessage; diff --git a/src/components/message-chat/time/index.less b/src/components/message-chat/time/index.less new file mode 100644 index 0000000..faf38a8 --- /dev/null +++ b/src/components/message-chat/time/index.less @@ -0,0 +1,12 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.time-message { + width: 100%; + font-size: 28px; + line-height: 40px; + font-weight: 400; + text-align: center; + color: #8D8E99; + margin-top: 40px; +} diff --git a/src/components/message-chat/time/index.tsx b/src/components/message-chat/time/index.tsx new file mode 100644 index 0000000..c61fce8 --- /dev/null +++ b/src/components/message-chat/time/index.tsx @@ -0,0 +1,20 @@ +import { IBaseMessageProps } from '@/components/message-chat/base'; +import { getScrollItemId } from '@/utils/common'; +import { formatTime } from '@/utils/time'; + +import './index.less'; + +interface IProps extends IBaseMessageProps {} + +const PREFIX = 'time-message'; + +function TimeMessage(props: IProps) { + const { id, message } = props; + return ( +
+ {formatTime(message.content, 'MM-DD HH:mm')} +
+ ); +} + +export default TimeMessage; diff --git a/src/components/message-dialog/index.less b/src/components/message-dialog/index.less new file mode 100644 index 0000000..d136df6 --- /dev/null +++ b/src/components/message-dialog/index.less @@ -0,0 +1,83 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.message-dialog { + + .title { + font-size: 36px; + line-height: 58px; + font-weight: 500; + color: @blColor; + } + + .tips { + font-size: 28px; + line-height: 48px; + font-weight: 400; + text-align: left; + color: @blColorG2; + + .highlight { + display: inline; + color: @blHighlightColor; + } + } + + &__help { + .flex-column(); + + &__title { + .title(); + } + + &__body { + margin-top: 24px + } + + &__tips { + .tips(); + + .highlight { + display: inline; + color: @blHighlightColor; + } + } + + &__btn { + .button(@width: 360px; @height: 72px; @fontSize: 28px; @borderRadius: 36px); + margin-top: 24px; + } + } + + &__no-times { + &__title { + .title(); + } + + &__tips { + .tips(); + margin-top: 24px; + } + + &__body { + width: 100%; + .flex-column(); + padding: 40px 0; + background: @blHighlightBg; + margin-top: 20px; + } + + &__times { + font-size: 28px; + line-height: 40px; + font-weight: 400; + color: #000000; + } + + + &__btn { + .button(@width: 360px; @height: 72px; @fontSize: 28px; @borderRadius: 36px); + margin-top: 24px; + } + } +} \ No newline at end of file diff --git a/src/components/message-dialog/index.tsx b/src/components/message-dialog/index.tsx new file mode 100644 index 0000000..9cb8099 --- /dev/null +++ b/src/components/message-dialog/index.tsx @@ -0,0 +1,70 @@ +import { Button } from '@tarojs/components'; + +import { Dialog } from '@taroify/core'; + +import './index.less'; + +const PREFIX = 'message-dialog'; +const HELP = `${PREFIX}__help`; +const NO_TIMES = `${PREFIX}__no-times`; + +interface IHelpProps { + open: boolean; + onClose: () => void; +} + +interface INoTimesProps { + open: boolean; + times: number; + onClick: () => void; + onClose: () => void; +} + +export function MessageHelpDialog(props: IHelpProps) { + const { open, onClose } = props; + + return ( + + +
+
消息通知次数说明
+
+
+ {`离开小程序后,如果有用户向你发送消息,我们将通过微信的"服务通知"提醒你。\n由于微信服务通知有次数限制,次数使用完则无法收到通知。`} +
+
+
通知次数
+ 代表你还能接收服务通知的次数 +
+
+
点击增加
+ 可以为你增加通知次数 +
+
+ +
+
+
+ ); +} + +export function MessageNoTimesDialog(props: INoTimesProps) { + const { open, times = 0, onClick, onClose } = props; + + return ( + + +
未读消息提醒次数不够了!
+
有通知次数才能及时收到招聘邀请,快点击“点我增加”吧~
+
+
{`未读消息提醒剩余:${times}次`}
+ +
+
+
+ ); +} diff --git a/src/components/overlay/index.less b/src/components/overlay/index.less new file mode 100644 index 0000000..066f1d2 --- /dev/null +++ b/src/components/overlay/index.less @@ -0,0 +1,18 @@ +@import '@/styles/variables.less'; + +.overlay { + &__container { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + z-index: 1; + background: @blMaskBg; + } + + &__content { + width: fit-content; + height: fit-content; + } +} diff --git a/src/components/overlay/index.tsx b/src/components/overlay/index.tsx new file mode 100644 index 0000000..3f38da9 --- /dev/null +++ b/src/components/overlay/index.tsx @@ -0,0 +1,33 @@ +import classNames from 'classnames'; +import { PropsWithChildren, useCallback } from 'react'; + +import './index.less'; + +interface IProps extends PropsWithChildren { + visible: boolean; + onClickOuter: () => void; + outerClassName?: string; + innerClassName?: string; +} + +const PREFIX = 'overlay'; + +function Overlay(props: IProps) { + const { visible, outerClassName, innerClassName, onClickOuter } = props; + + const onClickContent = useCallback((e: React.MouseEvent) => e.stopPropagation(), []); + + if (!visible) { + return null; + } + + return ( +
+
+ {props.children} +
+
+ ); +} + +export default Overlay; diff --git a/src/components/page-loading/index.less b/src/components/page-loading/index.less new file mode 100644 index 0000000..460861c --- /dev/null +++ b/src/components/page-loading/index.less @@ -0,0 +1,7 @@ +.page-loading { + width: 100vw; + height: 100vh; + display: flex; + align-items: center; + justify-content: center; +} \ No newline at end of file diff --git a/src/components/page-loading/index.tsx b/src/components/page-loading/index.tsx new file mode 100644 index 0000000..d954f9e --- /dev/null +++ b/src/components/page-loading/index.tsx @@ -0,0 +1,21 @@ +import { Loading } from '@taroify/core'; +import classNames from 'classnames'; + +import './index.less'; + +interface IProps { + className?: string; +} + +const PREFIX = 'page-loading'; + +function PageLoading(props: IProps) { + const { className } = props; + return ( +
+ 加载中... +
+ ); +} + +export default PageLoading; diff --git a/src/components/phone-button/index.less b/src/components/phone-button/index.less new file mode 100644 index 0000000..3158272 --- /dev/null +++ b/src/components/phone-button/index.less @@ -0,0 +1,4 @@ +.phone-button { + margin: 0; + padding: 0; +} \ No newline at end of file diff --git a/src/components/phone-button/index.tsx b/src/components/phone-button/index.tsx new file mode 100644 index 0000000..542449f --- /dev/null +++ b/src/components/phone-button/index.tsx @@ -0,0 +1,75 @@ +import { BaseEventOrig, Button, ButtonProps, ITouchEvent } from '@tarojs/components'; + +import classNames from 'classnames'; +import { useCallback } from 'react'; + +import { logWithPrefix } from '@/utils/common'; +import Toast from '@/utils/toast'; +import { requestUserInfo, setPhoneNumber } from '@/utils/user'; + +import './index.less'; + +export enum BindPhoneStatus { + Success, + Cancel, + Error, +} + +export interface IPhoneButtonProps extends ButtonProps { + message?: string; + // 绑定后是否需要刷新接口获取手机号 + needPhone?: boolean; + onBindPhone?: (status: BindPhoneStatus) => void; + onSuccess?: (e: ITouchEvent) => void; +} + +const PREFIX = 'phone-button'; +const log = logWithPrefix(PREFIX); + +export default function PhoneButton(props: IPhoneButtonProps) { + const { + className, + children, + message = '绑定成功', + openType, + needPhone, + onSuccess, + onBindPhone, + ...otherProps + } = props; + + const handleGetPhoneNumber = useCallback( + async (e: BaseEventOrig) => { + log('handleGetPhoneNumber', e.detail.code, e.detail.iv, e.detail.encryptedData); + const encryptedData = e.detail.encryptedData; + const iv = e.detail.iv; + if (!encryptedData || !iv) { + onBindPhone?.(BindPhoneStatus.Cancel); + return Toast.error('取消授权'); + } + try { + await setPhoneNumber({ encryptedData, iv }); + needPhone && (await requestUserInfo()); + Toast.success(message); + onBindPhone?.(BindPhoneStatus.Success); + onSuccess?.(e as ITouchEvent); + } catch (err) { + onBindPhone?.(BindPhoneStatus.Error); + Toast.error('绑定失败'); + log('bind phone fail', err); + } + }, + [message, needPhone, onSuccess, onBindPhone] + ); + + return ( + + ); +} diff --git a/src/components/picker-toolbar/index.less b/src/components/picker-toolbar/index.less new file mode 100644 index 0000000..9b910c5 --- /dev/null +++ b/src/components/picker-toolbar/index.less @@ -0,0 +1,37 @@ +@import '@/styles/variables.less'; + +.picker-toolbar { + width: 100%; + padding: 16px 24px; + border-top: solid 1px #E0E0E0; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + + .button(@borderColor) { + width: calc(50% - 36px); + height: 80px; + line-height: 78px; + border-radius: 48px; + padding: 0; + margin: 0; + border: solid 1px @borderColor; + } + + &__button-cancel { + .button(#E0E0E0); + margin-right: 24px; + color: @blColor; + background: #FFFFFF; + + &::after { + border-color: transparent + } + } + + &__button-confirm { + .button(@blHighlightColor); + color: #FFFFFF; + background: @blHighlightColor; + } +} \ No newline at end of file diff --git a/src/components/picker-toolbar/index.tsx b/src/components/picker-toolbar/index.tsx new file mode 100644 index 0000000..b234b48 --- /dev/null +++ b/src/components/picker-toolbar/index.tsx @@ -0,0 +1,31 @@ +import { Button } from '@tarojs/components'; + +import classNames from 'classnames'; + +import './index.less'; + +interface IProps { + className?: string; + cancelText?: string; + confirmText?: string; + onClickCancel: () => void; + onClickConfirm: () => void; +} + +const PREFIX = 'picker-toolbar'; + +function PickerToolbar(props: IProps) { + const { className, cancelText = '取消', confirmText = '确定', onClickCancel, onClickConfirm } = props; + return ( +
+ + +
+ ); +} + +export default PickerToolbar; diff --git a/src/components/product-card/index.less b/src/components/product-card/index.less new file mode 100644 index 0000000..b1afe8a --- /dev/null +++ b/src/components/product-card/index.less @@ -0,0 +1,34 @@ +@import '@/styles/variables.less'; + +.product-card { + padding: 24px; + border-radius: 16px; + background: #FFFFFF; + display: flex; + flex-direction: column; + + &__title { + font-size: 28px; + line-height: 32px; + color: @blColorG1; + margin-bottom: 40px; + } + + &__item-container { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + font-size: 28px; + line-height: 40px; + margin-bottom: 20px; + } + + &__item-name { + color: @blColor; + } + + &__item-balance { + color: @blColorG1; + } +} \ No newline at end of file diff --git a/src/components/product-card/index.tsx b/src/components/product-card/index.tsx new file mode 100644 index 0000000..e043319 --- /dev/null +++ b/src/components/product-card/index.tsx @@ -0,0 +1,68 @@ +import { Loading } from '@taroify/core'; +import classNames from 'classnames'; +import { useEffect, useRef, useState } from 'react'; + +import { ProductType } from '@/constants/product'; +import { ProductInfo } from '@/types/product'; +import { requestProductList } from '@/utils/product'; +import Toast from '@/utils/toast'; + +import './index.less'; + +interface IProps { + className?: string; +} + +const PREFIX = 'product-card'; +const getProductDescribe = (type: ProductType) => { + switch (type) { + case ProductType.GetJob: + return '群通告付费联系剩余次数'; + case ProductType.AddGroup: + return '添加定制群剩余次数'; + default: + return ''; + } +}; + +function ProductCard(props: IProps) { + const { className } = props; + const [loading, setLoading] = useState(false); + const [productList, setProductList] = useState([]); + const initRef = useRef(() => {}); + + useEffect(() => { + initRef.current = async () => { + try { + setLoading(true); + const list = await requestProductList(); + setProductList(list); + } catch (e) { + Toast.error('请求失败'); + } finally { + setLoading(false); + } + }; + }, []); + + useEffect(() => { + initRef.current(); + }, []); + + return ( +
+
账户信息
+ {productList.map((product: ProductInfo) => { + return ( +
+
{getProductDescribe(product.productId)}
+
{`${product.balance}次`}
+
+ ); + })} + {loading && } +
+ ); +} + +export default ProductCard; diff --git a/src/components/product-dialog/const.ts b/src/components/product-dialog/const.ts new file mode 100644 index 0000000..701c722 --- /dev/null +++ b/src/components/product-dialog/const.ts @@ -0,0 +1,37 @@ +export const PREFIX = 'product-dialog'; + +export enum DialogStatus { + // 加载中 + LOADING = 'loading', + // 直接联系通告主 + JOB_CONTACT_DIRECT = 'job_contact_direct', + // 联系客服去联系通告主 -> 订阅通知 + JOB_CONTACT_CS = 'job_contact_customer_service', + // 需要解锁 + JOB_NEED_UNLOCK = 'job_need_unlock', + // 解锁次数已用完 + JOB_UNABLE_UNLOCK = 'job_unable_unlock', + // 通告解锁次数用完,购买界面 + JOB_BUY = 'job_buy', + // 加群二维码 + GROUP_QR_CODE = 'group_qr_code', + // 确定加群 + GROUP_CONFIRM_ADD = 'group_confirm_add', + // 加群次数用完 + GROUP_NEED_BUY_ADD = 'group_need_buy_add', + // 购买群数,需要购买 + GROUP_BUY = 'group_buy', + GROUP_BUY_SUCCESS = 'group_buy_success', + // 去群内联系发布人 + // JOB_CONTACT_GO_GROUP = 'job_contact_go_group', + // 群内联系发布人,解锁加群 + JOB_CONTACT_INVITE_GROUP = 'job_contact_invite_group', + // 群内联系发布人,次数用完,需要购买 + JOB_CONTACT_NEED_BUY_GROUP = 'job_contact_need_buy_group', + // 企业发布通告会员 + PUBLISH_JOB_BUY = 'publish_job_buy', + // 企业购买单次发布通告 + COMPANY_PUBLISH_JOB_BUY = 'company_publish_job_buy', + // 发布通告联系客服二维码 + PUBLISH_QR_CODE = 'publish_qr_code', +} diff --git a/src/components/product-dialog/group/index.tsx b/src/components/product-dialog/group/index.tsx new file mode 100644 index 0000000..037b974 --- /dev/null +++ b/src/components/product-dialog/group/index.tsx @@ -0,0 +1,127 @@ +import Taro from '@tarojs/taro'; + +import { Dialog } from '@taroify/core'; +import React, { useCallback, useEffect, useRef, useState } from 'react'; + +import { DialogStatus, PREFIX } from '@/components/product-dialog/const'; +import QrCodeContent from '@/components/product-dialog/steps-ui/common-qr-code'; +import GroupBuy from '@/components/product-dialog/steps-ui/group-buy'; +import GroupBuySuccess from '@/components/product-dialog/steps-ui/group-buy-success'; +import ConfirmContent from '@/components/product-dialog/steps-ui/group-confirm'; +import GroupNeedBuyContent from '@/components/product-dialog/steps-ui/group-need-buy'; +import { ProductType, QrCodeType } from '@/constants/product'; +import { GroupDetail } from '@/types/group'; +import { copy } from '@/utils/common'; +import { getInviteGroupText, requestGroupDetail } from '@/utils/group'; +import { requestProductBalance, requestProductUseRecord, requestUseProduct } from '@/utils/product'; +import Toast from '@/utils/toast'; + +import '../index.less'; + +interface IProps { + blGroupId: string; + style?: React.CSSProperties; + onClose: (opened: boolean) => void; +} + +const PRODUCT_CODE = ProductType.AddGroup; + +function ProductGroupDialog(props: IProps) { + const { style, blGroupId, onClose } = props; + const [status, setStatus] = useState(DialogStatus.LOADING); + const [unlockTime, setUnlockTime] = useState(0); + const [groupDetail, setGroupDetail] = useState(null); + const initRef = useRef(() => {}); + + const handleCloseDialog = useCallback(() => { + onClose(false); + }, [onClose]); + + const handleClickUnable = useCallback(async () => setStatus(DialogStatus.GROUP_BUY), []); + + const handleClickConfirm = useCallback(async () => { + if (!groupDetail) { + return; + } + try { + const text = getInviteGroupText(groupDetail); + await Promise.all([ + await copy(text), + await requestUseProduct(PRODUCT_CODE, { blGroupId: groupDetail.blGroupId }), + ]); + setStatus(DialogStatus.GROUP_QR_CODE); + } catch (e) { + Toast.error('出错了,请重试'); + } + }, [groupDetail]); + + const handleClickBuy = useCallback(async (time: number) => { + setUnlockTime(time); + setStatus(DialogStatus.GROUP_BUY_SUCCESS); + }, []); + + const handleClickBuySuccess = useCallback(async () => { + setStatus(DialogStatus.GROUP_CONFIRM_ADD); + }, []); + + useEffect(() => { + initRef.current = async () => { + // if (1 < 2) { + // setStatus(DialogStatus.GROUP_BUY); + // return; + // } + try { + Taro.showLoading(); + // 当前群之前解锁过,直接显示二维码页面 + const result = await requestProductUseRecord(PRODUCT_CODE, { blGroupId }); + if (result) { + const detail = await requestGroupDetail(blGroupId); + const text = getInviteGroupText(detail); + await copy(text); + setStatus(DialogStatus.GROUP_QR_CODE); + return; + } + // 否则:如果有解锁次数,显示是否确定消费。无解锁次数,显示不无次数 UI + const [time, detail] = await Promise.all([requestProductBalance(PRODUCT_CODE), requestGroupDetail(blGroupId)]); + setGroupDetail(detail); + if (time <= 0) { + setStatus(DialogStatus.GROUP_NEED_BUY_ADD); + } else { + setUnlockTime(time); + setStatus(DialogStatus.GROUP_CONFIRM_ADD); + } + } catch (e) { + Toast.error('出错了,请重试'); + handleCloseDialog(); + } finally { + Taro.hideLoading(); + } + }; + }, [blGroupId, handleCloseDialog]); + + useEffect(() => { + initRef.current(); + }, []); + + if (status === DialogStatus.LOADING) { + return null; + } + + return ( + + + {status === DialogStatus.GROUP_NEED_BUY_ADD && } + {status === DialogStatus.GROUP_CONFIRM_ADD && ( + + )} + {status === DialogStatus.GROUP_QR_CODE && } + {status === DialogStatus.GROUP_BUY && } + {status === DialogStatus.GROUP_BUY_SUCCESS && ( + + )} + + + ); +} + +export default ProductGroupDialog; diff --git a/src/components/product-dialog/index.less b/src/components/product-dialog/index.less new file mode 100644 index 0000000..ea6f8a9 --- /dev/null +++ b/src/components/product-dialog/index.less @@ -0,0 +1,663 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.product-dialog { + + .layout() { + display: flex; + flex-direction: column; + align-items: center; + } + + .header-font { + font-size: 36px; + line-height: 58px; + color: @blColor; + font-weight: 500; + } + + .describe-font { + font-size: 28px; + line-height: 48px; + color: @blColorG2; + } + + .button() { + width: 360px; + height: 72px; + padding: 0; + margin: 0; + font-size: 28px; + font-weight: 500; + line-height: 72px; + border-radius: 44px; + color: #FFFFFF; + background: @blHighlightColor; + margin-top: 40px; + } + + .highlight-container() { + width: 100%; + box-sizing: border-box; + font-size: 24px; + line-height: 48px; + color: @blHighlightColor; + background: #6D3DF514; + border-radius: 8px; + padding: 32px 72px; + margin-top: 40px; + } + + // common + &__qr-code, + &__group-confirm, + &__group-need-buy, + &__job-contact-with-group, + &__group-buy, + &__group-buy_success, + &__publish-job-buy, + &__company-publish-job-buy { + .layout(); + } + + // ============================================= 通告 ================================================= // + // 通告已经解锁,直接联系 + &__job-contact_direct, + // 通告已经解锁,等待播络联系 + &__job-contact_cs { + .layout(); + + &__header { + .header-font(); + } + + &__describe { + .describe-font(); + margin-top: 24px + } + + &__content { + .highlight-container(); + } + + &__button { + .button(); + } + + &__report { + font-size: 28px; + font-weight: 400; + line-height: 40px; + color: @blHighlightColor; + margin-top: 40px; + } + } + + // 通告不可解锁 + &__job-unable { + .layout(); + + &__header { + display: flex; + flex-direction: row; + .header-font(); + + .highlight { + color: @blHighlightColor; + margin-left: 10px; + } + } + + &__describe { + display: flex; + flex-direction: row; + font-size: 28px; + line-height: 48px; + color: @blColor; + margin-top: 32px; + + .highlight { + color: @blHighlightColor; + } + } + + &__button { + .button(); + } + } + + // 通告购买 + &__job-buy { + .layout(); + + &__header { + .flex-row(); + .header-font(); + + .highlight { + color: @blHighlightColor; + margin-left: 10px; + } + } + + &__describe { + .flex-row(); + .describe-font(); + margin-top: 24px; + + .highlight { + color: @blHighlightColor; + } + } + + &__container { + .flex-row(); + justify-content: space-around; + margin-top: 56px; + } + + &__item { + position: relative; + width: 170px; + height: 192px; + .flex-column(); + justify-content: center; + border: 2px solid @blHighlightColor; + border-radius: 8px; + margin-right: 24px; + + &:last-child { + margin-right: 0; + } + + &.disabled { + border-color: #E0E0E0; + background: #F7F7F7; + } + + &.selected { + background: @blHighlightBg; + } + + &__title { + font-size: 32px; + line-height: 48px; + font-weight: 500; + color: @blColor; + margin-bottom: 8px; + + &.free { + font-size: 24px; + line-height: 36px; + margin-bottom: 14px; + } + } + + &__content { + font-size: 28px; + line-height: 40px; + font-weight: 500; + color: @blColor; + margin-bottom: 8px; + } + + &__price { + font-size: 28px; + line-height: 40px; + font-weight: 500; + color: @blHighlightColor; + } + + &__badge { + transform: translate3d(10px, -50%, 0); + } + } + + &__button { + .button(); + } + + &__tips { + font-size: 28px; + line-height: 40px; + color: @blColorG2; + margin-top: 32px; + } + + } + + // ============================================= 群 ================================================= // + + // 群 common + &__qr-code__tips, + &__group-confirm__tips, + &__group-need-buy__top-tips, + &__group-buy__tips, + &__group-buy_success__tips { + font-size: 24px; + line-height: 34px; + font-weight: 400; + color: @blColorG1; + + &.highlight { + color: @blHighlightColor; + } + } + + // 群解锁 + &__group-confirm__header { + .header-font(); + display: flex; + flex-direction: row; + margin-top: 24px; + + .highlight { + color: @blHighlightColor; + } + } + + &__group-confirm__button { + .button(); + } + + // 群扫描二维码 + &__qr-code__header { + .header-font(); + display: flex; + flex-direction: row; + align-items: center; + + .highlight { + color: @blHighlightColor; + } + } + + &__qr-code__copy-button { + .button(); + } + + &__qr-code__copy-icon { + width: 40px; + height: 40px; + margin-right: 10px; + } + + &__qr-code__copy-success { + font-size: 32px; + line-height: 40px; + font-weight: 500; + color: @blColor; + } + + &__qr-code__steps { + margin-top: 40px; + } + + &__qr-code__step { + display: flex; + flex-direction: row; + align-items: center; + font-size: 28px; + font-weight: 400; + } + + &__qr-code__step-number { + width: 36px; + height: 36px; + line-height: 36px; + text-align: center; + border-radius: 50%; + border: 2px solid #E0E0E0; + } + + &__qr-code__step-title { + margin-left: 20px; + + &.highlight { + color: @blHighlightColor; + } + } + + &__qr-code__step-line { + position: relative; + width: 2px; + height: 40px; + background: #E0E0E0; + margin: 4px 0; + margin-left: 18px; + } + + &__qr-code__image { + width: 304px; + height: 304px; + margin-top: 40px; + } + + &__qr-code__tips { + margin-top: 40px; + } + + &__qr-code__footer { + font-size: 28px; + line-height: 40px; + font-weight: 400; + color: @blHighlightColor; + margin-top: 24px; + } + + &__qr-code__tips-footer { + .divider { + width: 540px; + height: 1px; + background: #E0E0E0; + margin: 40px 0; + } + + .tips { + font-size: 28px; + line-height: 40px; + font-weight: 400; + color: @blColorG1; + } + } + + // 群解锁次数已用完 + &__group-need-buy__header { + .header-font(); + display: flex; + flex-direction: row; + margin-top: 16px; + + .highlight { + color: @blHighlightColor; + } + } + + &__group-need-buy__button-container { + position: relative; + margin-top: 40px; + } + + &__group-need-buy__button { + .button(); + margin-top: 0; + } + + // ============================================= 通告+群 ================================================= // + // 去群内联系发布人 + &__job-contact-with-group__header { + .header-font(); + } + + &__job-contact-with-group__describe { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + font-size: 36px; + line-height: 56px; + font-weight: 500; + color: @blColor; + margin-top: 40px; + + .highlight { + color: @blHighlightColor + } + } + + &__job-contact-with-group__content { + .highlight-container(); + } + + &__job-contact-with-group__button-container { + width: fit-content; + position: relative; + margin-top: 40px; + } + + &__job-contact-with-group__button { + .button(); + margin-top: 0; + } + + // ============================================= 购买群 ================================================= // + &__group-buy__header { + .header-font(); + } + + &__group-buy__container { + display: flex; + flex-direction: row; + justify-content: space-around; + margin-top: 40px; + } + + &__group-buy__item { + position: relative; + width: 170px; + height: 156px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + border: 2px solid @blHighlightColor; + border-radius: 8px; + margin-right: 24px; + + &.selected { + background: @blHighlightBg; + } + + &:last-child { + margin-right: 0; + } + } + + &__group-buy__item-title { + font-size: 40px; + line-height: 48px; + font-weight: 500; + color: @blColor; + } + + &__group-buy__item-price { + font-size: 28px; + line-height: 48px; + font-weight: 500; + color: @blHighlightColor; + margin-top: 12px; + } + + &__group-buy__button { + .button(); + } + + &__group-buy__tips { + margin-top: 34px; + } + + // ============================================= 购买成功 ================================================= // + &__group-buy_success__tips-container { + display: flex; + flex-direction: row; + } + + &__group-buy_success__icon { + width: 32px; + height: 32px; + margin-right: 12px; + } + + &__group-buy_success__tips { + white-space: nowrap; + } + + &__group-buy_success__header { + .header-font(); + display: flex; + flex-direction: row; + margin-top: 24px; + + .highlight { + color: @blHighlightColor; + } + } + + &__group-buy_success__button { + .button(); + } + + + // ============================================= 发布通告的企业会员 ================================================= // + &__publish-job-buy__header { + .header-font(); + } + + &__publish-job-buy__price-container { + position: relative; + display: flex; + flex-direction: row; + align-items: flex-end; + font-size: 28px; + line-height: 40px; + font-weight: 500; + margin-top: 60px; + } + + &__publish-job-buy__price { + font-size: 80px; + line-height: 80px; + } + + &__publish-job-buy__badge { + transform: translate3d(50%, -90%, 0); + } + + &__publish-job-buy__tips { + font-size: 28px; + line-height: 40px; + font-weight: 400; + color: @blColorG1; + margin-top: 32px; + } + + &__publish-job-buy__button { + .button(); + margin-top: 32px; + } + + // ============================================= 企业购买单次发布通告 ================================================= // + &__company-publish-job-buy { + &__header { + .header-font(); + } + + &__price-container { + .flex-row(); + justify-content: space-between; + margin-top: 54px; + } + + &__item { + position: relative; + width: 230px; + height: 156px; + .flex-column(); + justify-content: center; + border: 2px solid @blHighlightColor; + border-radius: 8px; + margin-right: 24px; + + &:last-child { + margin-right: 0; + } + + &.disabled { + border-color: #E0E0E0; + background: #F7F7F7; + } + + &.selected { + background: @blHighlightBg; + } + + &__title { + font-size: 32px; + line-height: 48px; + font-weight: 500; + color: @blColor; + margin-bottom: 12px; + + &.free { + font-size: 24px; + line-height: 36px; + margin-bottom: 14px; + } + } + + &__price { + font-size: 32px; + line-height: 48px; + font-weight: 500; + color: @blHighlightColor; + } + + &__badge { + transform: translate3d(10px, -50%, 0); + } + } + + &__divider { + .flex-row(); + justify-content: center; + margin-top: 24px; + + &__left-line, + &__right-line { + width: 206px; + height: 1px; + } + + &__left-line { + background: linear-gradient(270deg, #E0E0E0 0%, #FFFFFF 100%); + } + + &__right-line { + background: linear-gradient(90deg, #E0E0E0 0%, #FFFFFF 100%); + } + + &__title { + font-size: 24px; + line-height: 40px; + font-weight: 400; + color: @blColorG1; + } + } + + &__contents { + .flex-column(); + align-items: flex-start; + align-self: flex-start; + margin-top: 12px; + margin-left: 30px; + } + + &__content { + font-size: 24px; + line-height: 40px; + font-weight: 400; + text-align: left; + color: @blColorG1; + + &.highlight { + color: @blHighlightColor; + } + } + + &__button { + .button(); + margin-top: 32px; + } + } + +} \ No newline at end of file diff --git a/src/components/product-dialog/job-with-group/index.tsx b/src/components/product-dialog/job-with-group/index.tsx new file mode 100644 index 0000000..e38fcbe --- /dev/null +++ b/src/components/product-dialog/job-with-group/index.tsx @@ -0,0 +1,178 @@ +import Taro from '@tarojs/taro'; + +import { Dialog } from '@taroify/core'; +import { useCallback, useEffect, useRef, useState } from 'react'; + +import { DialogStatus, PREFIX } from '@/components/product-dialog/const'; +import QrCodeContent from '@/components/product-dialog/steps-ui/common-qr-code'; +import GroupBuy from '@/components/product-dialog/steps-ui/group-buy'; +import GroupBuySuccess from '@/components/product-dialog/steps-ui/group-buy-success'; +import ContactWithGroup from '@/components/product-dialog/steps-ui/job-contact-with-group'; +import UnableUnlockContent from '@/components/product-dialog/steps-ui/job-unable'; +import { ProductType, QrCodeType } from '@/constants/product'; +import { GroupDetail } from '@/types/group'; +import { JobDetails } from '@/types/job'; +import { copy, logWithPrefix } from '@/utils/common'; +import { getConnectCustomerServiceText, requestGroupDetail } from '@/utils/group'; +import { requestProductUseRecord, requestProductBalance, requestUseProduct } from '@/utils/product'; +import Toast from '@/utils/toast'; + +import '../index.less'; + +interface IProps { + jobDetail: JobDetails; + onClose: (opened: boolean) => void; +} + +const log = logWithPrefix('product-job-with-group'); + +function ProductJobWithGroupDialog(props: Omit) { + const { jobDetail, onClose } = props; + const [status, setStatus] = useState(DialogStatus.LOADING); + const [addGroupTime, setAddGroupTime] = useState(0); + const [groupDetail, setGroupDetail] = useState(null); + const initRef = useRef(() => {}); + + const handleCloseDialog = useCallback(() => { + onClose(false); + }, [onClose]); + + const handleCopyText = useCallback(async () => { + if (!groupDetail) { + return; + } + const text = getConnectCustomerServiceText(jobDetail, groupDetail); + await copy(text); + }, [jobDetail, groupDetail]); + + const handleWithGroupConfirm = useCallback( + async (dialogStatus: DialogStatus) => { + if (!groupDetail) { + return; + } + switch (dialogStatus) { + case DialogStatus.JOB_CONTACT_INVITE_GROUP: { + try { + const text = getConnectCustomerServiceText(jobDetail, groupDetail); + await Promise.all([ + copy(text), + requestUseProduct(ProductType.AddGroup, { blGroupId: groupDetail.blGroupId }), + ]); + setStatus(DialogStatus.GROUP_QR_CODE); + } catch (e) { + Toast.error('出错了,请重试'); + } + break; + } + case DialogStatus.JOB_CONTACT_NEED_BUY_GROUP: { + setStatus(DialogStatus.GROUP_BUY); + break; + } + default: + break; + } + }, + [jobDetail, groupDetail] + ); + + const handleClickBuy = useCallback(async (time: number) => { + setAddGroupTime(time); + setStatus(DialogStatus.GROUP_BUY_SUCCESS); + }, []); + + const handleClickBuySuccess = useCallback(async () => { + setStatus(DialogStatus.JOB_CONTACT_INVITE_GROUP); + }, []); + + useEffect(() => { + initRef.current = async () => { + const handleGroup = async () => { + const detail = await requestGroupDetail(jobDetail.blGroupId); + setGroupDetail(detail); + // if (1 < 2) { + // setStatus(DialogStatus.JOB_CONTACT_INVITE_GROUP); + // return; + // } + // 当前群之前解锁过,直接显示二维码页面 + const result = await requestProductUseRecord(ProductType.AddGroup, { blGroupId: jobDetail.blGroupId }); + if (result) { + const text = getConnectCustomerServiceText(jobDetail, detail); + await copy(text); + setStatus(DialogStatus.GROUP_QR_CODE); + return; + } + // 否则:如果有解锁次数,显示是否确定消费。无解锁次数,显示不无次数 UI + const time = await requestProductBalance(ProductType.AddGroup); + if (time <= 0) { + setStatus(DialogStatus.JOB_CONTACT_NEED_BUY_GROUP); + } else { + setAddGroupTime(time); + setStatus(DialogStatus.JOB_CONTACT_INVITE_GROUP); + } + }; + const handleJob = async () => { + // 通告是否已经报单过 + const result = await requestProductUseRecord(ProductType.GetJob, { jobId: jobDetail.id }); + if (result) { + // 报单过走加群流程 + await handleGroup(); + return; + } + // 自动报单 + const time = await requestProductBalance(ProductType.GetJob); + if (time <= 0) { + setStatus(DialogStatus.JOB_UNABLE_UNLOCK); + } else { + await requestUseProduct(ProductType.GetJob, { jobId: jobDetail.id }); + // 报单后走加群流程 + await handleGroup(); + } + }; + try { + Taro.showLoading(); + await handleJob(); + } catch (e) { + Toast.error('出错了,请重试'); + handleCloseDialog(); + } finally { + Taro.hideLoading(); + } + }; + }, [jobDetail, handleCloseDialog]); + + useEffect(() => { + initRef.current(); + }, []); + + log('render status', status); + + if (status === DialogStatus.LOADING) { + return null; + } + + return ( + + + {status === DialogStatus.JOB_UNABLE_UNLOCK && } + {status === DialogStatus.GROUP_QR_CODE && ( + + )} + {[DialogStatus.JOB_CONTACT_INVITE_GROUP, DialogStatus.JOB_CONTACT_NEED_BUY_GROUP].includes(status) && ( + + )} + {status === DialogStatus.GROUP_BUY && } + {status === DialogStatus.GROUP_BUY_SUCCESS && ( + + )} + + + ); +} + +export default ProductJobWithGroupDialog; diff --git a/src/components/product-dialog/job/index.tsx b/src/components/product-dialog/job/index.tsx new file mode 100644 index 0000000..52455d3 --- /dev/null +++ b/src/components/product-dialog/job/index.tsx @@ -0,0 +1,125 @@ +import Taro from '@tarojs/taro'; + +import { Dialog } from '@taroify/core'; +import { useCallback, useEffect, useRef, useState } from 'react'; + +import { DialogStatus, PREFIX } from '@/components/product-dialog/const'; +import JobBuy from '@/components/product-dialog/steps-ui/job-buy'; +import ContactCustomerService from '@/components/product-dialog/steps-ui/job-contact-customer'; +import ContactDirect from '@/components/product-dialog/steps-ui/job-contact-direct'; +import UnableUnlockContent from '@/components/product-dialog/steps-ui/job-unable'; +import { DeclarationType, ProductType } from '@/constants/product'; +import { JobDetails } from '@/types/job'; +import { ProductInfo } from '@/types/product'; +import { logWithPrefix } from '@/utils/common'; +import { + requestProductUseRecord, + requestProductBalance, + requestUseProduct, + requestAllBuyProduct, +} from '@/utils/product'; +import Toast from '@/utils/toast'; + +import '../index.less'; + +interface IProps { + data: JobDetails; + onClose: () => void; +} + +const PRODUCT_CODE = ProductType.VIP; +const log = logWithPrefix('product-job-dialog'); + +function ProductJobDialog(props: Omit) { + const { data, onClose } = props; + const [status, setStatus] = useState(DialogStatus.LOADING); + const [publisherAcctNo, setPublisherAcctNo] = useState(''); + const initRef = useRef(() => {}); + + const handleCloseDialog = useCallback(() => { + onClose(); + }, [onClose]); + + const handleAfterBuy = useCallback(async () => { + const time = await requestProductBalance(PRODUCT_CODE); + if (time <= 0) { + Toast.error('发生错误请重试'); + onClose(); + return; + } + const productInfo = await requestUseProduct(PRODUCT_CODE, { jobId: data.id }); + const declarationTypeResult = productInfo.declarationTypeResult; + if (declarationTypeResult?.type === DeclarationType.Direct && declarationTypeResult.publisherAcctNo) { + setStatus(DialogStatus.JOB_CONTACT_DIRECT); + setPublisherAcctNo(declarationTypeResult.publisherAcctNo); + } else { + setStatus(DialogStatus.JOB_CONTACT_CS); + } + }, [data, onClose]); + + const handleReport = useCallback(() => { + log('report', data.id); + }, [data]); + + useEffect(() => { + initRef.current = async () => { + const handleContact = (declarationTypeResult?: ProductInfo['declarationTypeResult']) => { + if (declarationTypeResult?.type === DeclarationType.Direct && declarationTypeResult.publisherAcctNo) { + setStatus(DialogStatus.JOB_CONTACT_DIRECT); + setPublisherAcctNo(declarationTypeResult.publisherAcctNo); + } else { + setStatus(DialogStatus.JOB_CONTACT_CS); + } + }; + try { + Taro.showLoading(); + // if (1 < 2) { + // setStatus(DialogStatus.JOB_CONTACT_CS); + // return; + // } + const result = await requestProductUseRecord(PRODUCT_CODE, { jobId: data.id }); + log('requestProductUseRecord result', result); + if (result) { + handleContact(result.declarationTypeResult); + return; + } + const time = await requestProductBalance(PRODUCT_CODE); + if (time <= 0) { + const allowBuy = await requestAllBuyProduct(PRODUCT_CODE); + setStatus(allowBuy ? DialogStatus.JOB_BUY : DialogStatus.JOB_UNABLE_UNLOCK); + } else { + const productInfo = await requestUseProduct(PRODUCT_CODE, { jobId: data.id }); + handleContact(productInfo.declarationTypeResult); + } + } catch (e) { + Toast.error('出错了,请重试'); + handleCloseDialog(); + } finally { + Taro.hideLoading(); + } + }; + }, [data, handleCloseDialog]); + + useEffect(() => { + initRef.current(); + }, []); + + if (status === DialogStatus.LOADING) { + return null; + } + + return ( + + + {status === DialogStatus.JOB_CONTACT_CS && } + {status === DialogStatus.JOB_CONTACT_DIRECT && ( + + )} + {status === DialogStatus.JOB_BUY && } + {status === DialogStatus.JOB_UNABLE_UNLOCK && } + + + ); +} + +export default ProductJobDialog; diff --git a/src/components/product-dialog/publish-job/index.tsx b/src/components/product-dialog/publish-job/index.tsx new file mode 100644 index 0000000..8ec0092 --- /dev/null +++ b/src/components/product-dialog/publish-job/index.tsx @@ -0,0 +1,149 @@ +import Taro from '@tarojs/taro'; + +import { Dialog } from '@taroify/core'; +import { useCallback, useEffect, useRef, useState } from 'react'; + +import { DialogStatus, PREFIX } from '@/components/product-dialog/const'; +import QrCodeContent from '@/components/product-dialog/steps-ui/common-qr-code'; +import CompanyPublishJobBuy from '@/components/product-dialog/steps-ui/company-publish-job-buy'; +import PublishJobBuy from '@/components/product-dialog/steps-ui/publish-job-buy'; +import { PageUrl } from '@/constants/app'; +import { ProductType, QrCodeType } from '@/constants/product'; +import { UserInfo } from '@/types/user'; +import { requestProductBalance } from '@/utils/product'; +import { navigateTo } from '@/utils/route'; +import Toast from '@/utils/toast'; + +import '../index.less'; + +interface IProps { + userInfo: UserInfo; + onClose: (opened: boolean) => void; + open?: boolean; +} + +export default function PublishJobDialog(props: IProps) { + const { userInfo, onClose } = props; + const [status, setStatus] = useState(DialogStatus.LOADING); + const initRef = useRef(() => {}); + + const handleCloseDialog = useCallback(() => { + onClose(false); + }, [onClose]); + + const handleNext = useCallback(async () => { + setStatus(DialogStatus.PUBLISH_QR_CODE); + }, []); + + useEffect(() => { + initRef.current = async () => { + // if (1 < 2) { + // setStatus(DialogStatus.PUBLISH_QR_CODE); + // return; + // } + try { + Taro.showLoading(); + const isVip = userInfo.isBoss && !userInfo.userBoss?.isExpire; + if (isVip) { + setStatus(DialogStatus.PUBLISH_QR_CODE); + } else { + setStatus(DialogStatus.PUBLISH_JOB_BUY); + } + } catch (e) { + Toast.error('出错了,请重试'); + handleCloseDialog(); + } finally { + Taro.hideLoading(); + } + }; + }, [userInfo, handleCloseDialog]); + + useEffect(() => { + initRef.current(); + }, []); + + if (status === DialogStatus.LOADING) { + return null; + } + + return ( + + + {status === DialogStatus.PUBLISH_JOB_BUY && } + {status === DialogStatus.PUBLISH_QR_CODE && } + + + ); +} + +export function PublishJobQrCodeDialog(props: Omit) { + const { onClose, open = true } = props; + + return ( + + + + + + ); +} + +export function CompanyPublishJobDialog(props: IProps) { + const { userInfo, onClose } = props; + const [status, setStatus] = useState(DialogStatus.LOADING); + const initRef = useRef(() => {}); + + const handleCloseDialog = useCallback(() => { + onClose(false); + }, [onClose]); + + const handleNext = useCallback(async () => { + onClose(true); + if (userInfo.bossAuthStatus) { + navigateTo(PageUrl.JobPublish); + } else { + navigateTo(PageUrl.CertificationStart); + } + }, [userInfo, onClose]); + + useEffect(() => { + initRef.current = async () => { + // if (1 < 2) { + // setStatus(DialogStatus.COMPANY_PUBLISH_JOB_BUY); + // return; + // } + try { + const productCode = ProductType.CompanyPublishJob; + Taro.showLoading(); + const time = await requestProductBalance(productCode); + if (time <= 0) { + setStatus(DialogStatus.COMPANY_PUBLISH_JOB_BUY); + return; + } + // 之前购买的次数还没用完 + handleNext(); + } catch (e) { + Toast.error('出错了,请重试'); + handleCloseDialog(); + } finally { + Taro.hideLoading(); + } + }; + }, [userInfo, handleCloseDialog, handleNext]); + + useEffect(() => { + initRef.current(); + }, []); + + if (status === DialogStatus.LOADING) { + return null; + } + + return ( + + + {status === DialogStatus.COMPANY_PUBLISH_JOB_BUY && } + + + ); +} diff --git a/src/components/product-dialog/steps-ui/common-qr-code.tsx b/src/components/product-dialog/steps-ui/common-qr-code.tsx new file mode 100644 index 0000000..625b7c7 --- /dev/null +++ b/src/components/product-dialog/steps-ui/common-qr-code.tsx @@ -0,0 +1,71 @@ +import { Button, Image } from '@tarojs/components'; + +import classNames from 'classnames'; +import { ReactElement } from 'react'; + +import { PREFIX } from '@/components/product-dialog/const'; +import QrCode from '@/components/qr-code'; +import { QrCodeType } from '@/constants/product'; + +interface IProps { + type: QrCodeType; + onClickCopy?: () => void; +} + +export default function QrCodeContent(props: IProps) { + const { type, onClickCopy } = props; + + let header: ReactElement | string | null = null; + let describe: ReactElement | string | null = null; + let footer: ReactElement | string | null = null; + + if (type === QrCodeType.ConnectCustomerService) { + header =
复制对接信息,发送给小二
; + describe = ( + + ); + footer = '在微信聊天框长按即可粘贴已复制内容'; + } else if (type === QrCodeType.PublishJob) { + header = ( + <> + +
您已支付
+ + ); + describe = ( +
+
+
1
+
扫码二维码联系专属客服
+
+
+
+
2
+
发送付款截图
+
+
+ ); + footer = ( +
+
+
{`客服工作时间:工作日9:30-18:00\n上班后会第一时间为您处理`}
+
+ ); + } + + return ( +
+
{header}
+ {describe} + +
长按并识别二维码,添加好友
+
{footer}
+
+ ); +} diff --git a/src/components/product-dialog/steps-ui/company-publish-job-buy.tsx b/src/components/product-dialog/steps-ui/company-publish-job-buy.tsx new file mode 100644 index 0000000..2d538b2 --- /dev/null +++ b/src/components/product-dialog/steps-ui/company-publish-job-buy.tsx @@ -0,0 +1,172 @@ +import Taro from '@tarojs/taro'; + +import { Button } from '@taroify/core'; +import classNames from 'classnames'; +import { useCallback, useEffect, useState } from 'react'; + +import Badge from '@/components/badge'; +import { PREFIX } from '@/components/product-dialog/const'; +import { CollectEventName, ReportEventId } from '@/constants/event'; +import { OrderStatus, OrderType, ProductSpecId, ProductType } from '@/constants/product'; +import { SubscribeTempId } from '@/constants/subscribe'; +import { logWithPrefix } from '@/utils/common'; +import { collectEvent, reportEvent } from '@/utils/event'; +import { getOrderPrice, isCancelPay, requestCreatePayInfo, requestOrderInfo, requestPayment } from '@/utils/product'; +import { postSubscribe, subscribeMessage } from '@/utils/subscribe'; +import Toast from '@/utils/toast'; + +interface IProps { + onNext: () => void; +} + +const log = logWithPrefix('company-publish-job-buy'); +const TEMP_IDS = [SubscribeTempId.UNREAD_MESSAGE_REMINDER, SubscribeTempId.NEW_MESSAGE_REMINDER]; +interface Item { + id: ProductSpecId; + title: string; + price: string; + amt: number; + contents: { content: string; highlight?: boolean }[]; + badge?: string; +} + +const LIST: Item[] = [ + { + id: ProductSpecId.BOSS_VIP_NEW_1, + title: '展示一周', + price: '480播豆', + amt: 48, + badge: '限时体验', + contents: [ + { content: '-1个通告' }, + { content: '-每天可查看20个主播详情' }, + { content: '-每天可自主联系10个主播' }, + // { content: '-播络可代为联系20个主播(高成功率)', highlight: true }, + { content: '-有效期一周' }, + ], + }, + { + id: ProductSpecId.BOSS_VIP_NEW_2, + title: '展示一月', + price: '960播豆', + amt: 96, + badge: '五折', + contents: [ + { content: '-1个通告' }, + { content: '-每天可查看20个主播详情' }, + { content: '-每天可自主联系10个主播' }, + // { content: '-播络可代为联系20个主播(高成功率)', highlight: true }, + { content: '-有效期一个月' }, + ], + }, + // { + // id: ProductSpecId.BOSS_VIP_NEW_3, + // title: '季会员', + // price: '2680播豆', + // amt: 268, + // badge: '7折', + // contents: [ + // { content: '-1个通告' }, + // { content: '-每天可查看20个主播详情' }, + // { content: '-每天可自主联系10个主播' }, + // { content: '-播络可代为联系60个主播(高成功率)', highlight: true }, + // { content: '-有效期3个月' }, + // ], + // }, +]; + +const subscribe = async () => { + const result = await subscribeMessage(TEMP_IDS); + const successIds: SubscribeTempId[] = []; + TEMP_IDS.forEach(id => { + result[id] === 'accept' && successIds.push(id); + }); + postSubscribe(TEMP_IDS, successIds); +}; + +export default function CompanyPublishJobBuy(props: IProps) { + const { onNext } = props; + const [selectItem, setSelectItem] = useState(LIST[0]); + + const handleClickItem = useCallback((newSelectItem: Item) => setSelectItem(newSelectItem), []); + + const handleBuy = useCallback(async () => { + log('handleBuy'); + reportEvent(ReportEventId.CLICK_PAY_PUBLISH_JOB); + try { + Taro.showLoading(); + const { payOrderNo, createPayInfo } = await requestCreatePayInfo({ + type: OrderType.CompanyVip, + amt: getOrderPrice(selectItem.amt), + productCode: ProductType.BOSS_VIP_NEW, + productSpecId: selectItem.id, + }); + log('handleBuy payInfo', payOrderNo, createPayInfo); + await requestPayment({ + timeStamp: createPayInfo.timeStamp, + nonceStr: createPayInfo.nonceStr, + package: createPayInfo.packageVal, + signType: createPayInfo.signType, + paySign: createPayInfo.paySign, + success: () => subscribe(), + }); + const { status } = await requestOrderInfo({ payOrderNo }); + log('handleBuy orderInfo', status); + if (status !== OrderStatus.Success) { + throw new Error('order status error'); + } + Taro.hideLoading(); + onNext(); + } catch (e) { + Taro.hideLoading(); + Toast.error(isCancelPay(e) ? '取消购买' : '购买失败请重试'); + log('handleBuy error', e); + } + }, [selectItem, onNext]); + + useEffect(() => { + collectEvent(CollectEventName.CREATE_ORDER_VIEW, { orderType: OrderType.BossVip, source: 'user-page' }); + }, []); + + return ( +
+
发认证通告限时折扣
+
+ {LIST.map(item => ( +
handleClickItem(item)} + > +
+ {item.title} +
+
{item.price}
+ {item.badge && } +
+ ))} +
+
+
+
包含
+
+
+
+ {selectItem.contents.map(i => ( +
+ {i.content} +
+ ))} +
+ +
+ ); +} diff --git a/src/components/product-dialog/steps-ui/group-buy-success.tsx b/src/components/product-dialog/steps-ui/group-buy-success.tsx new file mode 100644 index 0000000..c0b5b3e --- /dev/null +++ b/src/components/product-dialog/steps-ui/group-buy-success.tsx @@ -0,0 +1,32 @@ +import { Image } from '@tarojs/components'; + +import { Button } from '@taroify/core'; + +import { PREFIX } from '@/components/product-dialog/const'; + +interface IProps { + unlockTime: number; + onConfirm: () => void; +} + +export default function GroupBuySuccess(props: IProps) { + return ( +
+
+ +
购买成功
+
+
+
当前剩余人工对接次数
+
{` ${props.unlockTime}次`}
+
+ +
+ ); +} diff --git a/src/components/product-dialog/steps-ui/group-buy.tsx b/src/components/product-dialog/steps-ui/group-buy.tsx new file mode 100644 index 0000000..813fbd6 --- /dev/null +++ b/src/components/product-dialog/steps-ui/group-buy.tsx @@ -0,0 +1,110 @@ +import Taro from '@tarojs/taro'; + +import { Button } from '@taroify/core'; +import classNames from 'classnames'; +import { useCallback, useEffect, useState } from 'react'; + +import Badge from '@/components/badge'; +import { PREFIX } from '@/components/product-dialog/const'; +import { CollectEventName } from '@/constants/event'; +import { OrderStatus, OrderType, ProductSpecId, ProductType } from '@/constants/product'; +import { logWithPrefix } from '@/utils/common'; +import { collectEvent } from '@/utils/event'; +import { + getOrderPrice, + requestCreatePayInfo, + requestOrderInfo, + requestPayment, + requestProductBalance, +} from '@/utils/product'; +import Toast from '@/utils/toast'; + +interface IProps { + source: 'group-list' | 'job-detail'; + onConfirm: (time: number) => void; +} + +interface Item { + id: ProductSpecId; + num: number; + price: number; + badge?: string; +} + +const LIST: Item[] = [ + { id: ProductSpecId.AddGroup1, num: 1, price: 2 }, + { id: ProductSpecId.AddGroup2, num: 2, price: 3, badge: '7.5折' }, + { id: ProductSpecId.AddGroup3, num: 5, price: 6, badge: '6折' }, +]; + +const log = logWithPrefix('group-buy'); + +export default function GroupBuy(props: IProps) { + const { source, onConfirm } = props; + const [selectItem, setSelectItem] = useState(LIST[2]); + + const handleClickItem = useCallback((newSelectItem: Item) => setSelectItem(newSelectItem), []); + + const handleBuy = useCallback(async () => { + log('handleBuy', selectItem); + try { + Taro.showLoading(); + const { payOrderNo, createPayInfo } = await requestCreatePayInfo({ + type: OrderType.Group, + amt: getOrderPrice(selectItem.price), + // amt: selectItem.price, + // amt: 1, + productCode: ProductType.AddGroup, + productSpecId: selectItem.id, + }); + log('handleBuy payInfo', payOrderNo, createPayInfo); + await requestPayment({ + timeStamp: createPayInfo.timeStamp, + nonceStr: createPayInfo.nonceStr, + package: createPayInfo.packageVal, + signType: createPayInfo.signType, + paySign: createPayInfo.paySign, + }); + const { status } = await requestOrderInfo({ payOrderNo }); + log('handleBuy orderInfo', status); + if (status !== OrderStatus.Success) { + throw new Error('order status error'); + } + const time = await requestProductBalance(ProductType.AddGroup); + log('handleBuy new addGroupTime', time); + onConfirm(time); + } catch (e) { + Toast.error('购买失败!'); + log('handleBuy error', e); + } finally { + Taro.hideLoading(); + } + }, [selectItem, onConfirm]); + + useEffect(() => { + collectEvent(CollectEventName.CREATE_ORDER_VIEW, { orderType: OrderType.Group, source }); + }, [source]); + + return ( +
+
购买对接次数
+
+ {LIST.map(item => ( +
handleClickItem(item)} + > +
{`${item.num} 个`}
+
{`${item.price} 元`}
+ {item.badge && } +
+ ))} +
+ +
{`已选:${selectItem.num} 次`}
+
+ ); +} diff --git a/src/components/product-dialog/steps-ui/group-confirm.tsx b/src/components/product-dialog/steps-ui/group-confirm.tsx new file mode 100644 index 0000000..bde1e0d --- /dev/null +++ b/src/components/product-dialog/steps-ui/group-confirm.tsx @@ -0,0 +1,26 @@ +import { Button } from '@taroify/core'; +import classNames from 'classnames'; + +import { PREFIX } from '@/components/product-dialog/const'; + +interface IConfirmContentProps { + unlockTime: number; + onConfirm: () => void; +} + +export default function ConfirmContent(props: IConfirmContentProps) { + const { unlockTime, onConfirm } = props; + return ( +
+
如您不在群里,可让播络邀请
+
+
您还剩
+
{`${unlockTime}次邀请`}
+
机会
+
+ +
+ ); +} diff --git a/src/components/product-dialog/steps-ui/group-need-buy.tsx b/src/components/product-dialog/steps-ui/group-need-buy.tsx new file mode 100644 index 0000000..5da9ea2 --- /dev/null +++ b/src/components/product-dialog/steps-ui/group-need-buy.tsx @@ -0,0 +1,27 @@ +import { Button } from '@taroify/core'; +import classNames from 'classnames'; + +import Badge from '@/components/badge'; +import { PREFIX } from '@/components/product-dialog/const'; + +interface IUnableContentProp { + onConfirm: () => void; +} + +export default function GroupNeedBuyContent(props: IUnableContentProp) { + return ( +
+
如您不在群里,可让播络邀请
+
+
您的邀请机会
+
已用完
+
+
+ + +
+
+ ); +} diff --git a/src/components/product-dialog/steps-ui/job-buy.tsx b/src/components/product-dialog/steps-ui/job-buy.tsx new file mode 100644 index 0000000..fb4e154 --- /dev/null +++ b/src/components/product-dialog/steps-ui/job-buy.tsx @@ -0,0 +1,142 @@ +import Taro from '@tarojs/taro'; + +import { Button } from '@taroify/core'; +import classNames from 'classnames'; +import { useCallback, useEffect, useState } from 'react'; + +import Badge from '@/components/badge'; +import { PREFIX } from '@/components/product-dialog/const'; +import { CollectEventName } from '@/constants/event'; +import { OrderStatus, OrderType, ProductSpecId, ProductType } from '@/constants/product'; +import { SubscribeTempId } from '@/constants/subscribe'; +import { logWithPrefix } from '@/utils/common'; +import { collectEvent } from '@/utils/event'; +import { getOrderPrice, isCancelPay, requestCreatePayInfo, requestOrderInfo, requestPayment } from '@/utils/product'; +import { postSubscribe, subscribeMessage } from '@/utils/subscribe'; +import Toast from '@/utils/toast'; + +interface IProps { + onConfirm: () => void; +} + +interface Item { + id: ProductSpecId; + title: string; + content: string; + price: string; + amt: number; + badge?: string; +} + +const LIST: Item[] = [ + { id: ProductSpecId.WeeklyVIP, title: '非会员', content: '每日2次', price: '免费', amt: 0 }, + { + id: ProductSpecId.WeeklyVIP, + title: '周会员', + content: '每日5次', + price: '60播豆', + amt: 6, + badge: '限时体验', + }, + { + id: ProductSpecId.NewMonthlyVIP, + title: '月会员', + content: '每日5次', + price: '180播豆', + amt: 18, + badge: ' 超值', + }, +]; + +const log = logWithPrefix('job-buy'); +const SUBSCRIBE_ID = SubscribeTempId.SUBSCRIBE_VIP; + +const subscribe = async () => { + const result = await subscribeMessage([SUBSCRIBE_ID]); + const success = result[SUBSCRIBE_ID] === 'accept'; + if (!success) { + postSubscribe([SUBSCRIBE_ID], []); + return; + } + postSubscribe([SUBSCRIBE_ID], [SUBSCRIBE_ID]); +}; + +export default function JobBuy(props: IProps) { + const { onConfirm } = props; + const [selectItem, setSelectItem] = useState(LIST[1]); + + const handleClickItem = useCallback((newSelectItem: Item) => setSelectItem(newSelectItem), []); + + const handleBuy = useCallback(async () => { + log('handleBuy', selectItem); + try { + Taro.showLoading(); + const { payOrderNo, createPayInfo } = await requestCreatePayInfo({ + type: OrderType.VIP, + amt: getOrderPrice(selectItem.amt), + productCode: ProductType.VIP, + productSpecId: selectItem.id, + }); + log('handleBuy payInfo', payOrderNo, createPayInfo); + await requestPayment({ + timeStamp: createPayInfo.timeStamp, + nonceStr: createPayInfo.nonceStr, + package: createPayInfo.packageVal, + signType: createPayInfo.signType, + paySign: createPayInfo.paySign, + success: () => subscribe(), + }); + const { status } = await requestOrderInfo({ payOrderNo }); + log('handleBuy orderInfo', status); + if (status !== OrderStatus.Success) { + throw new Error('order status error'); + } + Taro.hideLoading(); + onConfirm(); + } catch (e) { + Taro.hideLoading(); + Toast.error(isCancelPay(e) ? '取消购买' : '购买失败请重试'); + log('handleBuy error', e); + } + }, [selectItem, onConfirm]); + + useEffect(() => { + collectEvent(CollectEventName.CREATE_ORDER_VIEW, { orderType: OrderType.VIP }); + }, []); + + return ( +
+
+
今日通告对接次数
+
已用完
+
+
+
+
明日
+
再来 或
+
升级会员
+
+
+ {LIST.map(item => ( +
handleClickItem(item)} + > +
{item.title}
+
{item.content}
+
{item.price}
+ {item.badge && } +
+ ))} +
+ + {/*
{`已选:${selectItem.title},含进本地群服务`}
*/} +
+ ); +} diff --git a/src/components/product-dialog/steps-ui/job-contact-customer.tsx b/src/components/product-dialog/steps-ui/job-contact-customer.tsx new file mode 100644 index 0000000..fdce020 --- /dev/null +++ b/src/components/product-dialog/steps-ui/job-contact-customer.tsx @@ -0,0 +1,47 @@ +import Taro from '@tarojs/taro'; + +import { Button } from '@taroify/core'; + +import { PREFIX } from '@/components/product-dialog/const'; +import { SubscribeTempId } from '@/constants/subscribe'; +import { postSubscribe, subscribeMessage } from '@/utils/subscribe'; +import Toast from '@/utils/toast'; + +interface IContactCSProps { + onAfterConfirm: () => void; +} + +const SUBSCRIBE_ID = SubscribeTempId.SUBSCRIBE_JOB; + +export default function ContactCustomerService(props: IContactCSProps) { + const { onAfterConfirm } = props; + + const handleClick = async () => { + try { + Taro.showLoading(); + const result = await subscribeMessage([SUBSCRIBE_ID]); + const success = result[SUBSCRIBE_ID] === 'accept'; + Taro.hideLoading(); + if (!success) { + Toast.error('拒绝订阅'); + postSubscribe([SUBSCRIBE_ID], []); + return; + } + Toast.success('订阅成功'); + postSubscribe([SUBSCRIBE_ID], [SUBSCRIBE_ID]); + onAfterConfirm(); + } catch (e) {} + }; + + return ( +
+
您已报名本通告
+
本通告尚未维护联系方式
+
{`本通告不消耗对接次数,\n联系上立马通知您`}
+
联系上后会通知您,请点击下方订阅通知
+ +
+ ); +} diff --git a/src/components/product-dialog/steps-ui/job-contact-direct.tsx b/src/components/product-dialog/steps-ui/job-contact-direct.tsx new file mode 100644 index 0000000..57b3231 --- /dev/null +++ b/src/components/product-dialog/steps-ui/job-contact-direct.tsx @@ -0,0 +1,34 @@ +import { Button } from '@taroify/core'; + +import { PREFIX } from '@/components/product-dialog/const'; +import { copy } from '@/utils/common'; + +interface IContactDirectProps { + publisherAcctNo: string; + onAfterConfirm: () => void; + onReport: () => void; +} + +export default function ContactDirect(props: IContactDirectProps) { + const { publisherAcctNo, onAfterConfirm, onReport } = props; + + const handleCopyAndContact = async () => { + await copy(publisherAcctNo); + onAfterConfirm(); + }; + + return ( +
+
您已报名本通告
+
通告发布人微信
+
{publisherAcctNo}
+
请添加对方好友,并备注:播络主播报单
+ + {/*
+ 上报:微信加不上 +
*/} +
+ ); +} diff --git a/src/components/product-dialog/steps-ui/job-contact-with-group.tsx b/src/components/product-dialog/steps-ui/job-contact-with-group.tsx new file mode 100644 index 0000000..d9a3c54 --- /dev/null +++ b/src/components/product-dialog/steps-ui/job-contact-with-group.tsx @@ -0,0 +1,68 @@ +import { Button } from '@taroify/core'; +import classNames from 'classnames'; +import { ReactElement } from 'react'; + +import Badge from '@/components/badge'; +import { DialogStatus, PREFIX } from '@/components/product-dialog/const'; + +interface IContactDirectProps { + status: DialogStatus; + publisherAcctNo: string; + imGroupNick: string; + inviteTime?: number; + onConfirm: (status: DialogStatus) => void; +} + +export default function ContactWithGroup(props: IContactDirectProps) { + const { status, publisherAcctNo, inviteTime, onConfirm } = props; + + const handleConfirm = async () => { + onConfirm(status); + }; + + let describe: ReactElement | null = null; + let buttonText = '确定'; + let badge: ReactElement | null = null; + if (status === DialogStatus.JOB_CONTACT_INVITE_GROUP) { + describe = ( +
+
您还剩
+
{`${inviteTime}次对接`}
+
机会
+
+ ); + } else if (status === DialogStatus.JOB_CONTACT_NEED_BUY_GROUP) { + describe = ( +
+
您的人工对接机会
+
已用完
+
+ ); + } + + if (status === DialogStatus.JOB_CONTACT_INVITE_GROUP) { + buttonText = '帮我对接'; + } else if (status === DialogStatus.JOB_CONTACT_NEED_BUY_GROUP) { + buttonText = '购买对接次数'; + } + + if (status === DialogStatus.JOB_CONTACT_NEED_BUY_GROUP) { + badge = ; + } + + return ( +
+
该通告需要播络帮你对接
+
+
{`发布人昵称: ${publisherAcctNo}`}
+
+ {describe} +
+ + {badge} +
+
+ ); +} diff --git a/src/components/product-dialog/steps-ui/job-unable.tsx b/src/components/product-dialog/steps-ui/job-unable.tsx new file mode 100644 index 0000000..6bb0677 --- /dev/null +++ b/src/components/product-dialog/steps-ui/job-unable.tsx @@ -0,0 +1,26 @@ +import { Button } from '@taroify/core'; + +import { PREFIX } from '@/components/product-dialog/const'; + +interface IUnableUnlockContentProp { + onConfirm: () => void; +} + +export default function UnableUnlockContent(props: IUnableUnlockContentProp) { + return ( +
+
+
今日通告对接次数
+
已用完
+
+
+
+
明日
+
再来
+
+ +
+ ); +} diff --git a/src/components/product-dialog/steps-ui/publish-job-buy.tsx b/src/components/product-dialog/steps-ui/publish-job-buy.tsx new file mode 100644 index 0000000..344e453 --- /dev/null +++ b/src/components/product-dialog/steps-ui/publish-job-buy.tsx @@ -0,0 +1,78 @@ +import Taro from '@tarojs/taro'; + +import { Button } from '@taroify/core'; +import { useCallback, useEffect } from 'react'; + +import Badge from '@/components/badge'; +import { PREFIX } from '@/components/product-dialog/const'; +import { CollectEventName } from '@/constants/event'; +import { OrderStatus, OrderType, ProductSpecId, ProductType } from '@/constants/product'; +import { logWithPrefix } from '@/utils/common'; +import { collectEvent } from '@/utils/event'; +import { getOrderPrice, isCancelPay, requestCreatePayInfo, requestOrderInfo, requestPayment } from '@/utils/product'; +import Toast from '@/utils/toast'; + +interface IProps { + onNext: () => void; +} + +const log = logWithPrefix('publish-job-buy'); +const PRICE = 48; + +export default function PublishJobBuy(props: IProps) { + const { onNext } = props; + + const handleBuy = useCallback(async () => { + log('handleBuy'); + try { + Taro.showLoading(); + const { payOrderNo, createPayInfo } = await requestCreatePayInfo({ + type: OrderType.BossVip, + amt: getOrderPrice(PRICE), + // amt: PRICE, + // amt: 1, + productCode: ProductType.BossVip, + productSpecId: ProductSpecId.BossVip, + }); + log('handleBuy payInfo', payOrderNo, createPayInfo); + await requestPayment({ + timeStamp: createPayInfo.timeStamp, + nonceStr: createPayInfo.nonceStr, + package: createPayInfo.packageVal, + signType: createPayInfo.signType, + paySign: createPayInfo.paySign, + }); + const { status } = await requestOrderInfo({ payOrderNo }); + log('handleBuy orderInfo', status); + if (status !== OrderStatus.Success) { + throw new Error('order status error'); + } + Taro.hideLoading(); + onNext(); + } catch (e) { + Taro.hideLoading(); + Toast.error(isCancelPay(e) ? '取消购买' : '购买失败请重试'); + log('handleBuy error', e); + } + }, [onNext]); + + useEffect(() => { + collectEvent(CollectEventName.CREATE_ORDER_VIEW, { orderType: OrderType.BossVip, source: 'user-page' }); + }, []); + + return ( +
+
发通告限时折扣
+ +
+
{PRICE}
+
+ +
+
原价:68元/月
+ +
+ ); +} diff --git a/src/components/protocol-privacy/index.less b/src/components/protocol-privacy/index.less new file mode 100644 index 0000000..5b58eab --- /dev/null +++ b/src/components/protocol-privacy/index.less @@ -0,0 +1,22 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.protocol-privacy { + .flex-row(); + font-size: 24px; + font-weight: 400; + line-height: 32px; + color: @blHighlightColor; + + &__need-margin { + margin-left: 6px; + } + + &__checkbox { + .flex-row(); + + .taroify-checkbox__label { + .flex-row(); + } + } +} \ No newline at end of file diff --git a/src/components/protocol-privacy/index.tsx b/src/components/protocol-privacy/index.tsx new file mode 100644 index 0000000..f884df1 --- /dev/null +++ b/src/components/protocol-privacy/index.tsx @@ -0,0 +1,63 @@ +import { Checkbox } from '@taroify/core'; +import classNames from 'classnames'; +import React, { useCallback } from 'react'; + +import { PageUrl } from '@/constants/app'; +import { navigateTo } from '@/utils/route'; + +import './index.less'; + +interface IProps { + className?: string; + divider?: boolean; +} + +interface IPropWithCheckbox { + className?: string; + checked: boolean; + onChange: (checked: boolean) => void; +} + +const PREFIX = 'protocol-privacy'; +const PREFIX_CHECKBOX = `${PREFIX}__checkbox`; + +export function ProtocolPrivacy(props: IProps) { + const { className, divider = false } = props; + + const handleClickProtocol = useCallback((e: React.MouseEvent) => { + e.stopPropagation(); + navigateTo(PageUrl.ProtocolWebview); + }, []); + + const handleClickPrivacy = useCallback((e: React.MouseEvent) => { + e.stopPropagation(); + navigateTo(PageUrl.PrivacyWebview); + }, []); + + return ( +
+
隐私协议
+ {divider &&
·
} +
+ 用户协议 +
+
+ ); +} + +export function ProtocolPrivacyCheckbox(props: IPropWithCheckbox) { + const { className, checked, onChange } = props; + + return ( + +
我已阅读并同意
+ +
+ ); +} diff --git a/src/components/qr-code/index.less b/src/components/qr-code/index.less new file mode 100644 index 0000000..2afc7f6 --- /dev/null +++ b/src/components/qr-code/index.less @@ -0,0 +1,16 @@ +.qr-code { + position: relative; + + &__image { + width: 100%; + height: 100%; + } + + &__loading, + &__error { + position: absolute; + top: 50%; + left: 50%; + transform: translate3d(-50%, -50%, 0); + } +} \ No newline at end of file diff --git a/src/components/qr-code/index.tsx b/src/components/qr-code/index.tsx new file mode 100644 index 0000000..79dabec --- /dev/null +++ b/src/components/qr-code/index.tsx @@ -0,0 +1,59 @@ +import { Image } from '@tarojs/components'; + +import { Loading } from '@taroify/core'; +import classNames from 'classnames'; +import { useCallback, useEffect, useState } from 'react'; + +import { QrCodeType } from '@/constants/product'; +import { requestCsQrCode } from '@/utils/product'; + +import './index.less'; + +interface IProps { + type: QrCodeType; + className?: string; +} + +const PREFIX = 'qr-code'; + +function QrCode(props: IProps) { + const { className, type } = props; + const [src, setSrc] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(false); + + const handleLoad = useCallback(() => setLoading(false), []); + + const handleError = useCallback(() => setError(true), []); + + useEffect(() => { + const request = async () => { + try { + const qrCode = await requestCsQrCode(type); + qrCode ? setSrc(qrCode) : setError(true); + } catch (e) { + setError(true); + } + }; + request(); + }, [type]); + + return ( +
+ {src && ( + + )} + {!error && (!src || loading) && } + {error &&
加载错误...
} +
+ ); +} + +export default QrCode; diff --git a/src/components/safe-bottom-padding/index.less b/src/components/safe-bottom-padding/index.less new file mode 100644 index 0000000..a74b7d4 --- /dev/null +++ b/src/components/safe-bottom-padding/index.less @@ -0,0 +1,8 @@ +.safe-bottom-padding { + width: 100%; + min-width: 1px; + /* 兼容 iOS < 11.2 */ + height: constant(safe-area-inset-bottom); + /* 兼容 iOS >= 11.2 */ + height: env(safe-area-inset-bottom); +} diff --git a/src/components/safe-bottom-padding/index.tsx b/src/components/safe-bottom-padding/index.tsx new file mode 100644 index 0000000..7f9a6dc --- /dev/null +++ b/src/components/safe-bottom-padding/index.tsx @@ -0,0 +1,15 @@ +import classNames from 'classnames'; + +import './index.less'; + +interface IProps { + className?: string; +} + +const SAFE_BOTTOM_PADDING_CLASS = 'safe-bottom-padding'; + +function SafeBottomPadding(props: IProps) { + return
; +} + +export default SafeBottomPadding; diff --git a/src/components/salary-select/index.tsx b/src/components/salary-select/index.tsx new file mode 100644 index 0000000..853be18 --- /dev/null +++ b/src/components/salary-select/index.tsx @@ -0,0 +1,20 @@ +import Select, { ISelectProps, ISelectOption } from '@/components/select'; +import { EmployType, FULL_EMPLOY_SALARY_OPTIONS, PART_EMPLOY_SALARY_OPTIONS } from '@/constants/job'; +import { SalaryRange } from '@/types/job'; + +interface IProps extends Omit, 'options'> { + type: EmployType; +} + +const PART_OPTIONS: ISelectOption[] = PART_EMPLOY_SALARY_OPTIONS; + +const FULL_OPTIONS: ISelectOption[] = FULL_EMPLOY_SALARY_OPTIONS; + +function SalarySelect(props: IProps) { + const { type, value: selectValue, onSelect } = props; + const isPart = type === EmployType.Part; + const options = isPart ? PART_OPTIONS : FULL_OPTIONS; + return + + + ); +} + +export default Select; diff --git a/src/components/skeleton-loading/index.less b/src/components/skeleton-loading/index.less new file mode 100644 index 0000000..c51e9a5 --- /dev/null +++ b/src/components/skeleton-loading/index.less @@ -0,0 +1,33 @@ +.skeleton-loading { + + @keyframes skeleton { + 0% { + transform: translateX(-100%); + } + 50% { + /* +0.5s of delay between each loop */ + transform: translateX(100%); + } + 100% { + transform: translateX(100%); + } + } + + width: 100%; + height: 100%; + position: relative; + overflow: hidden; + background: #f2f3f5; + + &::after { + content: ''; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + transform: translateX(-100%); + background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.04), transparent); + animation: skeleton 1.6s linear 0.5s infinite; + } +} \ No newline at end of file diff --git a/src/components/skeleton-loading/index.tsx b/src/components/skeleton-loading/index.tsx new file mode 100644 index 0000000..33f2af6 --- /dev/null +++ b/src/components/skeleton-loading/index.tsx @@ -0,0 +1,15 @@ +import classNames from 'classnames'; +import './index.less'; + +interface IProps { + className?: string; + customName?: string; +} + +const PREFIX = 'skeleton-loading'; + +function SkeletonLoading(props: IProps) { + return
; +} + +export default SkeletonLoading; diff --git a/src/components/slogan/index.less b/src/components/slogan/index.less new file mode 100644 index 0000000..25438a2 --- /dev/null +++ b/src/components/slogan/index.less @@ -0,0 +1,33 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.app-slogan { + position: fixed; + left: 0; + right: 0; + // tab-bar 110px, 边距 64px + bottom: 174px; + .flex-column(); + + &__content { + .flex-row(); + justify-content: center; + } + + &__icon { + width: 104px; + height: 48px; + } + + &__slogan { + font-size: 24px; + line-height: 32px; + font-weight: 400; + color: @blColorG2; + margin-top: 8px; + } + + &__protocol { + margin-top: 20px; + } +} \ No newline at end of file diff --git a/src/components/slogan/index.tsx b/src/components/slogan/index.tsx new file mode 100644 index 0000000..f7cd8b7 --- /dev/null +++ b/src/components/slogan/index.tsx @@ -0,0 +1,29 @@ +import { Image } from '@tarojs/components'; + +import classNames from 'classnames'; + +import { ProtocolPrivacy } from '@/components/protocol-privacy'; +import SafeBottomPadding from '@/components/safe-bottom-padding'; + +import './index.less'; + +interface IProps { + className?: string; +} + +const PREFIX = 'app-slogan'; + +function Slogan(props: IProps) { + return ( +
+
+ +
|每天推荐海量高薪通告
+
+ + +
+ ); +} + +export default Slogan; diff --git a/src/components/switch-bar/index.less b/src/components/switch-bar/index.less new file mode 100644 index 0000000..5e130b4 --- /dev/null +++ b/src/components/switch-bar/index.less @@ -0,0 +1,28 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.switch-bar { + height: 64px; + padding: 0 16px; + .flex-row(); + border-radius: 50px; + border: 2px solid #97979733; + background: #FFFFFF; + + &:active { + background: #F1F1F1; + } + + .title { + font-size: 28px; + line-height:40px; + font-weight: 500; + color: @blColor; + } + + .icon { + width: 28px; + height: 28px; + margin-left: 6px; + } +} diff --git a/src/components/switch-bar/index.tsx b/src/components/switch-bar/index.tsx new file mode 100644 index 0000000..8ef0bd2 --- /dev/null +++ b/src/components/switch-bar/index.tsx @@ -0,0 +1,22 @@ +import { Image } from '@tarojs/components'; + +import './index.less'; + +interface IProps { + title: string; + onClick: () => void; +} + +const PREFIX = 'switch-bar'; + +function SwitchBar(props: IProps) { + const { title, onClick } = props; + return ( +
+
{title}
+ +
+ ); +} + +export default SwitchBar; diff --git a/src/components/tab-bar/index.less b/src/components/tab-bar/index.less new file mode 100644 index 0000000..34b0bea --- /dev/null +++ b/src/components/tab-bar/index.less @@ -0,0 +1,72 @@ +@import '@/styles/variables.less'; + +@item-color: @blColorG1; +@active-item-color: @blColor; + +.base-tab-bar { + width: 100%; + height: 110px; + display: flex; + flex-direction: row; + justify-content: space-around; + + --tabbar-item-color: @item-color; + --tabbar-item-active-color: @active-item-color; + + &__wrapper { + position: fixed; + left: 0; + right: 0; + bottom: 0; + z-index: 50; + // padding-bottom: 68px; + padding-bottom: constant(safe-area-inset-bottom); /* 兼容 iOS < 11.2 */ + padding-bottom: env(safe-area-inset-bottom); /* 兼容 iOS >= 11.2 */ + background: #FFFFFF; + } + + &__item { + flex: 1 1 0%; + display: flex; + justify-content: center; + align-items: center; + color: @item-color; + + --tabbar-item-font-size: 34px; + + &.selected { + color: @active-item-color; + } + } + + &__item_content { + position: relative; + + &__badge { + position: absolute; + width: 16px; + height: 16px; + border-radius: 50%; + background: #EB5953; + top: -14px; + right: -14px; + } + + &__num-badge { + position: absolute; + top: 0; + right: 0; + min-width: calc(32px - 8px); + height: 32px; + line-height: 32px; + border-radius: 32px; + padding: 4px 8px; + font-size: 24px; + font-weight: 400; + color: #FFFFFF; + text-align: center; + background: #EB5953; + transform: translate3d(80%, -70%, 0); + } + } +} diff --git a/src/components/tab-bar/index.tsx b/src/components/tab-bar/index.tsx new file mode 100644 index 0000000..8e4eefd --- /dev/null +++ b/src/components/tab-bar/index.tsx @@ -0,0 +1,92 @@ +import { Tabbar } from '@taroify/core'; +import classNames from 'classnames'; +import { useCallback } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; + +import { APP_TAB_BAR_ID, RoleType, PageType, PageUrl } from '@/constants/app'; +import { ANCHOR_TAB_LIST, COMPANY_TAB_LIST, TabItemType } from '@/hooks/use-config'; +import useMessage from '@/hooks/use-message'; +import useRoleType from '@/hooks/user-role-type'; +import { changeHomePage } from '@/store/actions'; +import { selectHomePageType } from '@/store/selector'; +import { logWithPrefix } from '@/utils/common'; +import { switchTab } from '@/utils/route'; + +import './index.less'; + +interface IProps { + className?: string; +} + +const PREFIX = 'base-tab-bar'; +const log = logWithPrefix('tab-bar'); + +const TabItem = (props: { item: TabItemType }) => { + const { item } = props; + const { unReadCount } = useMessage(); + return ( +
+ {item.text} + {item.type === PageType.Message && unReadCount > 0 && ( + <> + {unReadCount > 999 ? ( +
+ ) : ( +
{Math.min(unReadCount, 999)}
+ )} + + )} +
+ ); +}; + +function BaseTabBar(props: IProps) { + const { className } = props; + const roleType = useRoleType(); + const currentPage = useSelector(selectHomePageType); + const dispatch = useDispatch(); + + const tabs = roleType === RoleType.Anchor ? ANCHOR_TAB_LIST : COMPANY_TAB_LIST; + + const handleTabClick = useCallback( + (value: PageType) => { + if (value === currentPage) { + return; + } + dispatch(changeHomePage(value)); + const item = tabs.find((i: TabItemType) => i.type === value); + log('tab bar changed', value, item?.pagePath); + item && switchTab(item.pagePath as PageUrl); + }, + [tabs, currentPage, dispatch] + ); + + // useEffect(() => { + // const item = tabs.find((i: TabItemType) => i.type === currentPage); + // log('effect', roleType, tabs, currentPage, item); + // if (!item) { + // dispatch(changeHomePage(tabs[0].type)); + // switchTab(tabs[0].pagePath as PageUrl); + // } + // }, [roleType, tabs, currentPage, dispatch]); + + return ( +
+ + {tabs.map((item: TabItemType) => { + return ( + handleTabClick(item.type)} + className={classNames(`${PREFIX}__item`, { selected: item.type === currentPage })} + > + + + ); + })} + +
+ ); +} +export default BaseTabBar; diff --git a/src/components/user-job-list/index.less b/src/components/user-job-list/index.less new file mode 100644 index 0000000..3cb15a6 --- /dev/null +++ b/src/components/user-job-list/index.less @@ -0,0 +1,17 @@ +@import '@/styles/variables.less'; + +.user-job-list { + &__list-date-group { + height: 72px; + font-size: 24px; + line-height: 72px; + padding: 0 24px; + color: @blColor; + } + + &__list-card { + &.last { + margin-bottom: 0; + } + } +} \ No newline at end of file diff --git a/src/components/user-job-list/index.tsx b/src/components/user-job-list/index.tsx new file mode 100644 index 0000000..d9ebca0 --- /dev/null +++ b/src/components/user-job-list/index.tsx @@ -0,0 +1,165 @@ +import { List, PullRefresh } from '@taroify/core'; +import classNames from 'classnames'; +import { useCallback, useEffect, useRef, useState } from 'react'; + +import JobCard from '@/components/job-card'; +import ListPlaceholder from '@/components/list-placeholder'; +import { UserJobType } from '@/constants/job'; +import { JobInfo, GetUserJobRequest } from '@/types/job'; +import { logWithPrefix } from '@/utils/common'; +import { requestUserJobList as requestData } from '@/utils/job'; + +import './index.less'; + +interface IRequestProps extends Partial { + type: number; +} + +export interface IJobListProps extends IRequestProps { + refreshDisabled?: boolean; + listHeight?: number; + className?: string; +} + +const FIRST_PAGE = 0; +const PAGE_SIZE = 40; +const PREFIX = 'user-job-list'; +const log = logWithPrefix(PREFIX); + +function UserJobList(props: IJobListProps) { + const { className, listHeight, refreshDisabled, type = UserJobType.MyDeclared, keyWord } = props; + const [refreshing, setRefreshing] = useState(false); + const [hasMore, setHasMore] = useState(true); + const [loadingMore, setLoadingMore] = useState(false); + const [loadMoreError, setLoadMoreError] = useState(false); + const [dataMap, setDataMap] = useState>(new Map()); + const currentPage = useRef(FIRST_PAGE); + const requestProps = useRef({ type }); + + const dateGroups = [...dataMap.keys()].sort().reverse(); + + const handleRefresh = useCallback(async () => { + log('start pull refresh'); + try { + setRefreshing(true); + setLoadMoreError(false); + const { page, hasMore: more, dataMap: map } = await requestData({ ...requestProps.current, page: 1 }); + setHasMore(more); + setDataMap(map); + currentPage.current = page; + log('pull refresh success'); + } catch (e) { + setDataMap(new Map()); + setHasMore(false); + setLoadMoreError(true); + currentPage.current = FIRST_PAGE; + log('pull refresh failed'); + } finally { + setRefreshing(false); + } + }, []); + + const handleLoadMore = useCallback(async () => { + log('start load more', hasMore); + if (!hasMore) { + return; + } + setLoadMoreError(false); + setLoadingMore(true); + try { + const { + page, + hasMore: more, + dataMap: map, + } = await requestData({ ...requestProps.current, page: currentPage.current + 1 }); + const newMap = new Map(dataMap); + for (const date of map.keys()) { + const newJobs = map.get(date) || []; + if (newMap.has(date)) { + const jobs = newMap.get(date); + jobs?.push(...newJobs); + } else { + newMap.set(date, newJobs); + } + } + setDataMap(newMap); + setHasMore(more); + currentPage.current = page; + log('load more success'); + } catch (e) { + setLoadMoreError(true); + log('load more failed'); + } finally { + setLoadingMore(false); + } + }, [dataMap, currentPage, hasMore]); + + useEffect(() => { + log('request params changed'); + requestProps.current = { type, keyWord, pageSize: PAGE_SIZE }; + }, [type, keyWord]); + + // 初始化数据&配置变更后刷新数据 + useEffect(() => { + const refresh = async () => { + log('props changed, start refresh list data'); + try { + setDataMap(new Map()); + setLoadingMore(true); + setLoadMoreError(false); + const { page, hasMore: more, dataMap: map } = await requestData({ ...requestProps.current, page: 1 }); + setHasMore(more); + setDataMap(map); + currentPage.current = page; + } catch (e) { + setDataMap(new Map()); + setHasMore(false); + setLoadMoreError(true); + currentPage.current = FIRST_PAGE; + } finally { + log('props changed, refresh list data end'); + setLoadingMore(false); + } + }; + refresh(); + }, [type, keyWord]); + + return ( + + + {dateGroups.map(date => { + const jobs = dataMap.get(date) || []; + return ( + <> +
+ {date} +
+ {jobs.map((item, index) => ( + + ))} + + ); + })} + +
+
+ ); +} + +export default UserJobList; diff --git a/src/components/wx-cell/index.less b/src/components/wx-cell/index.less new file mode 100644 index 0000000..13bac3b --- /dev/null +++ b/src/components/wx-cell/index.less @@ -0,0 +1,67 @@ +@import '@/styles/common.less'; +@import '@/styles/variables.less'; + +.wechat-cell { + + &.no-wechat { + .taroify-cell__title { + color: @blColorG1; + } + } + + &__cell_right-text { + font-size: 28px; + font-weight: 400; + color: @blColor; + } + + &__popup { + background: #FFFFFF; + border-top-left-radius: 24px; + border-top-right-radius: 24px; + + &__content { + padding: 0 24px; + padding-top: 36px; + padding-bottom: 100px; + .flex-column(); + } + + &__title { + font-size: 32px; + font-weight: 500; + color: @blColor; + } + + &__tips { + font-size: 24px; + font-weight: 400; + color: @blColorG1; + margin-top: 16px; + } + + &__input { + width: 100%; + height: 100px; + font-size: 32px; + line-height: 32px; + color: @blColor; + background: #F6F6F6; + padding: 0 32px; + margin-top: 40px; + box-sizing: border-box; + border-radius: 16px; + } + + &__input-placeholder { + font-size: 32px; + line-height: 32px; + color: #CCCCCC; + } + + &_confirm-button { + .button(@width: 360px, @height: 72px); + margin-top: 40px; + } + } +} \ No newline at end of file diff --git a/src/components/wx-cell/index.tsx b/src/components/wx-cell/index.tsx new file mode 100644 index 0000000..7a27198 --- /dev/null +++ b/src/components/wx-cell/index.tsx @@ -0,0 +1,76 @@ +import { BaseEventOrig, Button, Input, InputProps } from '@tarojs/components'; + +import { Cell, Popup } from '@taroify/core'; +import classNames from 'classnames'; +import { useCallback, useState } from 'react'; + +import SafeBottomPadding from '@/components/safe-bottom-padding'; +import useUserInfo from '@/hooks/use-user-info'; +import Toast from '@/utils/toast'; +import { updateUserInfo } from '@/utils/user'; + +import './index.less'; + +interface IProps { + className?: string; +} + +const PREFIX = 'wechat-cell'; + +function WechatCell(props: IProps) { + const { className } = props; + const userInfo = useUserInfo(); + const [open, setOpen] = useState(false); + const [value, setValue] = useState(userInfo.imAcctNo || ''); + const title = userInfo.imAcctNo ? `联系微信:${userInfo.imAcctNo}` : '尚未提供联系微信号'; + + const handleClick = useCallback(() => setOpen(true), []); + + const handleInput = useCallback((e: BaseEventOrig) => { + const text = e.detail.value || ''; + setValue(text); + }, []); + + const handleSubmit = useCallback(async () => { + if (!value) { + Toast.error('微信号不能为空'); + return; + } + await updateUserInfo({ imAcctNo: value }); + setOpen(false); + }, [value]); + + return ( + <> + +
{userInfo.imAcctNo ? '修改' : '去提供'}
+
+ setOpen(false)}> +
+
联系微信
+
当与对方交换联系方式时,会优先发送以下微信号
+ + +
+ +
+ + ); +} + +export default WechatCell; diff --git a/src/constants/app.ts b/src/constants/app.ts new file mode 100644 index 0000000..00f2495 --- /dev/null +++ b/src/constants/app.ts @@ -0,0 +1,83 @@ +export const APP_TAB_BAR_ID = 'app-custom-tab-bar'; +export const CONTACT_WE_COM_ID = 'a7fb5b91778009f036207269c65aaaab'; + +export enum PageType { + Start = 'start', + JOB = 'job', + Group = 'group', + GroupV2 = 'group-v2', + Anchor = 'anchor', + Message = 'message', + BatchPublish = 'batch-publish', + User = 'user', + DEV = 'dev', +} + +export enum EventName { + ADD_GROUP = 'add_group', + SELECT_CITY = 'select_city', + CREATE_PROFILE = 'create_profile', + UPDATE_PROFILE = 'update_profile', + EDIT_JOB_DESCRIBE = 'edit_job_describe', + JOB_UPDATE = 'job_update', + COMPANY_JOB_PUBLISH_CHANGED = 'company_job_publish_changed', + SELECT_MY_PUBLISH_JOB = 'select_my_publish_job', + EXIT_CHAT_PAGE = 'exit_chat_page', + VIEW_MATERIAL_SUCCESS = 'view_material_success', +} + +export enum OpenSource { + None = 'none', + JobPage = 'job_page', + JobSearch = 'job_search', + AddIndentCity = 'profile_add_indent_city', + UserPage = 'user_page', + AnchorPage = 'anchor_page', + MaterialViewPage = 'material_view_page', +} + +export enum PageUrl { + Start = 'pages/start/index', + DevDebug = 'pages/dev-debug/index', + Job = 'pages/job/index', + Group = 'pages/group/index', + GroupV2 = 'pages/group-v2/index', + GroupList = 'pages/group-list/index', + Anchor = 'pages/anchor/index', + Message = 'pages/message/index', + MessageChat = 'pages/message-chat/index', + User = 'pages/user/index', + JobDetail = 'pages/job-detail/index', + JobSearch = 'pages/job-search/index', + JobPublish = 'pages/job-publish/index', + JobPublishDescribe = 'pages/job-publish-describe/index', + JobPublishAddress = 'pages/job-publish-address/index', + JobSelectMyPublish = 'pages/job-select-my-publish/index', + GroupJob = 'pages/group-job/index', + CitySearch = 'pages/search-city/index', + UserInfo = 'pages/user-info/index', + UserBatchPublish = 'pages/user-batch-publish/index', + MyDeclaration = 'pages/my-declaration/index', + MyPublish = 'pages/my-publish/index', + FollowGroup = 'pages/follow-group/index', + MaterialProfile = 'pages/material-profile/index', + MaterialUploadVideo = 'pages/material-upload-video/index', + MaterialCreateProfile = 'pages/material-create-profile/index', + MaterialEditProfile = 'pages/material-edit-profile/index', + MaterialView = 'pages/material-view/index', + MaterialWebview = 'pages/material-webview/index', + Certification = 'pages/certification/index', + CertificationStart = 'pages/certification-start/index', + CertificationManage = 'pages/certification-manage/index', + ProtocolWebview = 'pages/protocol-webview/index', + PrivacyWebview = 'pages/privacy-webview/index', +} + +export enum PluginUrl { + LocationSelect = 'plugin://chooseLocation/index', +} + +export enum RoleType { + Anchor = '1', + Company = '2', +} diff --git a/src/constants/cache-key.ts b/src/constants/cache-key.ts new file mode 100644 index 0000000..ed08768 --- /dev/null +++ b/src/constants/cache-key.ts @@ -0,0 +1,11 @@ +export enum CacheKey { + // CACHE_USER_INFO = '__cache_user_info__', + CACHE_LOCATION_INFO = '__cache_location_info__', + JOB_SEARCH_HISTORY = '__job_search_history__', + LAST_OPEN_MINI_PROGRAM_TIME = '__last_open_mini_program_time__', + LAST_SHOW_MATERIAL_TIME = '__last_show_material_time__', + SHOW_LOGIN_DIALOG = '__show_login_dialog__', + APP_MODE = '__bl_app_mode__', + APP_MODE_NEW = '__bl_app_mode_2__', + LAST_SELECT_MY_JOB = '__last_select_my_job__', +} diff --git a/src/constants/city.ts b/src/constants/city.ts new file mode 100644 index 0000000..edbf6d6 --- /dev/null +++ b/src/constants/city.ts @@ -0,0 +1,5861 @@ +// https://github.com/youzan/vant/blob/main/packages/vant-area-data/src/index.ts +export const PROVINCE_LIST: Record = { + 110000: '北京', + 120000: '天津', + 130000: '河北', + 140000: '山西', + 150000: '内蒙古自治区', + 210000: '辽宁', + 220000: '吉林', + 230000: '黑龙江', + 310000: '上海', + 320000: '江苏', + 330000: '浙江', + 340000: '安徽', + 350000: '福建', + 360000: '江西', + 370000: '山东', + 410000: '河南', + 420000: '湖北', + 430000: '湖南', + 440000: '广东', + 450000: '广西壮族自治区', + 460000: '海南', + 500000: '重庆', + 510000: '四川', + 520000: '贵州', + 530000: '云南', + 540000: '西藏自治区', + 610000: '陕西', + 620000: '甘肃', + 630000: '青海', + 640000: '宁夏回族自治区', + 650000: '新疆维吾尔自治区', + 710000: '台湾', + 810000: '香港特别行政区', + 820000: '澳门特别行政区', +}; + +export const CITY_LIST: Record = { + 110100: '北京', + 120100: '天津', + 130100: '石家庄', + 130200: '唐山', + 130300: '秦皇岛', + 130400: '邯郸', + 130500: '邢台', + 130600: '保定', + 130700: '张家口', + 130800: '承德', + 130900: '沧州', + 131000: '廊坊', + 131100: '衡水', + 140100: '太原', + 140200: '大同', + 140300: '阳泉', + 140400: '长治', + 140500: '晋城', + 140600: '朔州', + 140700: '晋中', + 140800: '运城', + 140900: '忻州', + 141000: '临汾', + 141100: '吕梁', + 150100: '呼和浩特', + 150200: '包头', + 150300: '乌海', + 150400: '赤峰', + 150500: '通辽', + 150600: '鄂尔多斯', + 150700: '呼伦贝尔', + 150800: '巴彦淖尔', + 150900: '乌兰察布', + 152200: '兴安盟', + 152500: '锡林郭勒盟', + 152900: '阿拉善盟', + 210100: '沈阳', + 210200: '大连', + 210300: '鞍山', + 210400: '抚顺', + 210500: '本溪', + 210600: '丹东', + 210700: '锦州', + 210800: '营口', + 210900: '阜新', + 211000: '辽阳', + 211100: '盘锦', + 211200: '铁岭', + 211300: '朝阳', + 211400: '葫芦岛', + 220100: '长春', + 220200: '吉林', + 220300: '四平', + 220400: '辽源', + 220500: '通化', + 220600: '白山', + 220700: '松原', + 220800: '白城', + 222400: '延边朝鲜族自治州', + 230100: '哈尔滨', + 230200: '齐齐哈尔', + 230300: '鸡西', + 230400: '鹤岗', + 230500: '双鸭山', + 230600: '大庆', + 230700: '伊春', + 230800: '佳木斯', + 230900: '七台河', + 231000: '牡丹江', + 231100: '黑河', + 231200: '绥化', + 232700: '大兴安岭地区', + 310100: '上海', + 320100: '南京', + 320200: '无锡', + 320300: '徐州', + 320400: '常州', + 320500: '苏州', + 320600: '南通', + 320700: '连云港', + 320800: '淮安', + 320900: '盐城', + 321000: '扬州', + 321100: '镇江', + 321200: '泰州', + 321300: '宿迁', + 330100: '杭州', + 330200: '宁波', + 330300: '温州', + 330400: '嘉兴', + 330500: '湖州', + 330600: '绍兴', + 330700: '金华', + 330800: '衢州', + 330900: '舟山', + 331000: '台州', + 331100: '丽水', + 340100: '合肥', + 340200: '芜湖', + 340300: '蚌埠', + 340400: '淮南', + 340500: '马鞍山', + 340600: '淮北', + 340700: '铜陵', + 340800: '安庆', + 341000: '黄山', + 341100: '滁州', + 341200: '阜阳', + 341300: '宿州', + 341500: '六安', + 341600: '亳州', + 341700: '池州', + 341800: '宣城', + 350100: '福州', + 350200: '厦门', + 350300: '莆田', + 350400: '三明', + 350500: '泉州', + 350600: '漳州', + 350700: '南平', + 350800: '龙岩', + 350900: '宁德', + 360100: '南昌', + 360200: '景德镇', + 360300: '萍乡', + 360400: '九江', + 360500: '新余', + 360600: '鹰潭', + 360700: '赣州', + 360800: '吉安', + 360900: '宜春', + 361000: '抚州', + 361100: '上饶', + 370100: '济南', + 370200: '青岛', + 370300: '淄博', + 370400: '枣庄', + 370500: '东营', + 370600: '烟台', + 370700: '潍坊', + 370800: '济宁', + 370900: '泰安', + 371000: '威海', + 371100: '日照', + 371300: '临沂', + 371400: '德州', + 371500: '聊城', + 371600: '滨州', + 371700: '菏泽', + 410100: '郑州', + 410200: '开封', + 410300: '洛阳', + 410400: '平顶山', + 410500: '安阳', + 410600: '鹤壁', + 410700: '新乡', + 410800: '焦作', + 410900: '濮阳', + 411000: '许昌', + 411100: '漯河', + 411200: '三门峡', + 411300: '南阳', + 411400: '商丘', + 411500: '信阳', + 411600: '周口', + 411700: '驻马店', + 419000: '省直辖县', + 420100: '武汉', + 420200: '黄石', + 420300: '十堰', + 420500: '宜昌', + 420600: '襄阳', + 420700: '鄂州', + 420800: '荆门', + 420900: '孝感', + 421000: '荆州', + 421100: '黄冈', + 421200: '咸宁', + 421300: '随州', + 422800: '恩施土家族苗族自治州', + 429000: '省直辖县', + 430100: '长沙', + 430200: '株洲', + 430300: '湘潭', + 430400: '衡阳', + 430500: '邵阳', + 430600: '岳阳', + 430700: '常德', + 430800: '张家界', + 430900: '益阳', + 431000: '郴州', + 431100: '永州', + 431200: '怀化', + 431300: '娄底', + 433100: '湘西土家族苗族自治州', + 440100: '广州', + 440200: '韶关', + 440300: '深圳', + 440400: '珠海', + 440500: '汕头', + 440600: '佛山', + 440700: '江门', + 440800: '湛江', + 440900: '茂名', + 441200: '肇庆', + 441300: '惠州', + 441400: '梅州', + 441500: '汕尾', + 441600: '河源', + 441700: '阳江', + 441800: '清远', + 441900: '东莞', + 442000: '中山', + 445100: '潮州', + 445200: '揭阳', + 445300: '云浮', + 450100: '南宁', + 450200: '柳州', + 450300: '桂林', + 450400: '梧州', + 450500: '北海', + 450600: '防城港', + 450700: '钦州', + 450800: '贵港', + 450900: '玉林', + 451000: '百色', + 451100: '贺州', + 451200: '河池', + 451300: '来宾', + 451400: '崇左', + 460100: '海口', + 460200: '三亚', + 460300: '三沙', + 460400: '儋州', + 469000: '省直辖县', + 500100: '重庆', + 500200: '县', + 510100: '成都', + 510300: '自贡', + 510400: '攀枝花', + 510500: '泸州', + 510600: '德阳', + 510700: '绵阳', + 510800: '广元', + 510900: '遂宁', + 511000: '内江', + 511100: '乐山', + 511300: '南充', + 511400: '眉山', + 511500: '宜宾', + 511600: '广安', + 511700: '达州', + 511800: '雅安', + 511900: '巴中', + 512000: '资阳', + 513200: '阿坝藏族羌族自治州', + 513300: '甘孜藏族自治州', + 513400: '凉山彝族自治州', + 520100: '贵阳', + 520200: '六盘水', + 520300: '遵义', + 520400: '安顺', + 520500: '毕节', + 520600: '铜仁', + 522300: '黔西南布依族苗族自治州', + 522600: '黔东南苗族侗族自治州', + 522700: '黔南布依族苗族自治州', + 530100: '昆明', + 530300: '曲靖', + 530400: '玉溪', + 530500: '保山', + 530600: '昭通', + 530700: '丽江', + 530800: '普洱', + 530900: '临沧', + 532300: '楚雄彝族自治州', + 532500: '红河哈尼族彝族自治州', + 532600: '文山壮族苗族自治州', + 532800: '西双版纳傣族自治州', + 532900: '大理白族自治州', + 533100: '德宏傣族景颇族自治州', + 533300: '怒江傈僳族自治州', + 533400: '迪庆藏族自治州', + 540100: '拉萨', + 540200: '日喀则', + 540300: '昌都', + 540400: '林芝', + 540500: '山南', + 540600: '那曲', + 542500: '阿里地区', + 610100: '西安', + 610200: '铜川', + 610300: '宝鸡', + 610400: '咸阳', + 610500: '渭南', + 610600: '延安', + 610700: '汉中', + 610800: '榆林', + 610900: '安康', + 611000: '商洛', + 620100: '兰州', + 620200: '嘉峪关', + 620300: '金昌', + 620400: '白银', + 620500: '天水', + 620600: '武威', + 620700: '张掖', + 620800: '平凉', + 620900: '酒泉', + 621000: '庆阳', + 621100: '定西', + 621200: '陇南', + 622900: '临夏回族自治州', + 623000: '甘南藏族自治州', + 630100: '西宁', + 630200: '海东', + 632200: '海北藏族自治州', + 632300: '黄南藏族自治州', + 632500: '海南藏族自治州', + 632600: '果洛藏族自治州', + 632700: '玉树藏族自治州', + 632800: '海西蒙古族藏族自治州', + 640100: '银川', + 640200: '石嘴山', + 640300: '吴忠', + 640400: '固原', + 640500: '中卫', + 650100: '乌鲁木齐', + 650200: '克拉玛依', + 650400: '吐鲁番', + 650500: '哈密', + 652300: '昌吉回族自治州', + 652700: '博尔塔拉蒙古自治州', + 652800: '巴音郭楞蒙古自治州', + 652900: '阿克苏地区', + 653000: '克孜勒苏柯尔克孜自治州', + 653100: '喀什地区', + 653200: '和田地区', + 654000: '伊犁哈萨克自治州', + 654200: '塔城地区', + 654300: '阿勒泰地区', + 659000: '自治区直辖县级行政区划', + 710100: '台北', + 710200: '高雄', + 710300: '台南', + 710400: '台中', + 710500: '金门县', + 710600: '南投县', + 710700: '基隆', + 710800: '新竹', + 710900: '嘉义', + 711100: '新北', + 711200: '宜兰县', + 711300: '新竹县', + 711400: '桃园', + 711500: '苗栗县', + 711700: '彰化县', + 711900: '嘉义县', + 712100: '云林县', + 712400: '屏东县', + 712500: '台东县', + 712600: '花莲县', + 712700: '澎湖县', + 712800: '连江县', + 810100: '香港岛', + 810200: '九龙', + 810300: '新界', + 820100: '澳门半岛', + 820200: '离岛', +}; + +export const COUNTY_LIST: Record = { + 110101: '东城区', + 110102: '西城区', + 110105: '朝阳区', + 110106: '丰台区', + 110107: '石景山区', + 110108: '海淀区', + 110109: '门头沟区', + 110111: '房山区', + 110112: '通州区', + 110113: '顺义区', + 110114: '昌平区', + 110115: '大兴区', + 110116: '怀柔区', + 110117: '平谷区', + 110118: '密云区', + 110119: '延庆区', + 120101: '和平区', + 120102: '河东区', + 120103: '河西区', + 120104: '南开区', + 120105: '河北区', + 120106: '红桥区', + 120110: '东丽区', + 120111: '西青区', + 120112: '津南区', + 120113: '北辰区', + 120114: '武清区', + 120115: '宝坻区', + 120116: '滨海新区', + 120117: '宁河区', + 120118: '静海区', + 120119: '蓟州区', + 130102: '长安区', + 130104: '桥西区', + 130105: '新华区', + 130107: '井陉矿区', + 130108: '裕华区', + 130109: '藁城区', + 130110: '鹿泉区', + 130111: '栾城区', + 130121: '井陉县', + 130123: '正定县', + 130125: '行唐县', + 130126: '灵寿县', + 130127: '高邑县', + 130128: '深泽县', + 130129: '赞皇县', + 130130: '无极县', + 130131: '平山县', + 130132: '元氏县', + 130133: '赵县', + 130171: '石家庄高新技术产业开发区', + 130172: '石家庄循环化工园区', + 130181: '辛集', + 130183: '晋州市', + 130184: '新乐市', + 130202: '路南区', + 130203: '路北区', + 130204: '古冶区', + 130205: '开平区', + 130207: '丰南区', + 130208: '丰润区', + 130209: '曹妃甸区', + 130224: '滦南县', + 130225: '乐亭县', + 130227: '迁西县', + 130229: '玉田县', + 130273: '唐山高新技术产业开发区', + 130274: '河北唐山海港经济开发区', + 130281: '遵化市', + 130283: '迁安市', + 130284: '滦州市', + 130302: '海港区', + 130303: '山海关区', + 130304: '北戴河区', + 130306: '抚宁区', + 130321: '青龙满族自治县', + 130322: '昌黎县', + 130324: '卢龙县', + 130371: '秦皇岛市经济技术开发区', + 130372: '北戴河新区', + 130390: '经济技术开发区', + 130402: '邯山区', + 130403: '丛台区', + 130404: '复兴区', + 130406: '峰峰矿区', + 130407: '肥乡区', + 130408: '永年区', + 130423: '临漳县', + 130424: '成安县', + 130425: '大名县', + 130426: '涉县', + 130427: '磁县', + 130430: '邱县', + 130431: '鸡泽县', + 130432: '广平县', + 130433: '馆陶县', + 130434: '魏县', + 130435: '曲周县', + 130471: '邯郸经济技术开发区', + 130473: '邯郸冀南新区', + 130481: '武安市', + 130502: '襄都区', + 130503: '信都区', + 130505: '任泽区', + 130506: '南和区', + 130522: '临城县', + 130523: '内丘县', + 130524: '柏乡县', + 130525: '隆尧县', + 130528: '宁晋县', + 130529: '巨鹿县', + 130530: '新河县', + 130531: '广宗县', + 130532: '平乡县', + 130533: '威县', + 130534: '清河县', + 130535: '临西县', + 130571: '河北邢台经济开发区', + 130581: '南宫市', + 130582: '沙河市', + 130602: '竞秀区', + 130606: '莲池区', + 130607: '满城区', + 130608: '清苑区', + 130609: '徐水区', + 130623: '涞水县', + 130624: '阜平县', + 130626: '定兴县', + 130627: '唐县', + 130628: '高阳县', + 130629: '容城县', + 130630: '涞源县', + 130631: '望都县', + 130632: '安新县', + 130633: '易县', + 130634: '曲阳县', + 130635: '蠡县', + 130636: '顺平县', + 130637: '博野县', + 130638: '雄县', + 130671: '保定高新技术产业开发区', + 130672: '保定白沟新城', + 130681: '涿州市', + 130682: '定州市', + 130683: '安国市', + 130684: '高碑店市', + 130702: '桥东区', + 130703: '桥西区', + 130705: '宣化区', + 130706: '下花园区', + 130708: '万全区', + 130709: '崇礼区', + 130722: '张北县', + 130723: '康保县', + 130724: '沽源县', + 130725: '尚义县', + 130726: '蔚县', + 130727: '阳原县', + 130728: '怀安县', + 130730: '怀来县', + 130731: '涿鹿县', + 130732: '赤城县', + 130772: '张家口市察北管理区', + 130802: '双桥区', + 130803: '双滦区', + 130804: '鹰手营子矿区', + 130821: '承德县', + 130822: '兴隆县', + 130824: '滦平县', + 130825: '隆化县', + 130826: '丰宁满族自治县', + 130827: '宽城满族自治县', + 130828: '围场满族蒙古族自治县', + 130871: '承德高新技术产业开发区', + 130881: '平泉市', + 130902: '新华区', + 130903: '运河区', + 130921: '沧县', + 130922: '青县', + 130923: '东光县', + 130924: '海兴县', + 130925: '盐山县', + 130926: '肃宁县', + 130927: '南皮县', + 130928: '吴桥县', + 130929: '献县', + 130930: '孟村回族自治县', + 130971: '河北沧州经济开发区', + 130972: '沧州高新技术产业开发区', + 130973: '沧州渤海新区', + 130981: '泊头市', + 130982: '任丘市', + 130983: '黄骅市', + 130984: '河间市', + 131002: '安次区', + 131003: '广阳区', + 131022: '固安县', + 131023: '永清县', + 131024: '香河县', + 131025: '大城县', + 131026: '文安县', + 131028: '大厂回族自治县', + 131071: '廊坊经济技术开发区', + 131081: '霸州市', + 131082: '三河市', + 131090: '开发区', + 131102: '桃城区', + 131103: '冀州区', + 131121: '枣强县', + 131122: '武邑县', + 131123: '武强县', + 131124: '饶阳县', + 131125: '安平县', + 131126: '故城县', + 131127: '景县', + 131128: '阜城县', + 131171: '河北衡水经济开发区', + 131172: '衡水滨湖新区', + 131182: '深州市', + 140105: '小店区', + 140106: '迎泽区', + 140107: '杏花岭区', + 140108: '尖草坪区', + 140109: '万柏林区', + 140110: '晋源区', + 140121: '清徐县', + 140122: '阳曲县', + 140123: '娄烦县', + 140181: '古交市', + 140212: '新荣区', + 140213: '平城区', + 140214: '云冈区', + 140215: '云州区', + 140221: '阳高县', + 140222: '天镇县', + 140223: '广灵县', + 140224: '灵丘县', + 140225: '浑源县', + 140226: '左云县', + 140271: '山西大同经济开发区', + 140302: '城区', + 140303: '矿区', + 140311: '郊区', + 140321: '平定县', + 140322: '盂县', + 140403: '潞州区', + 140404: '上党区', + 140405: '屯留区', + 140406: '潞城区', + 140423: '襄垣县', + 140425: '平顺县', + 140426: '黎城县', + 140427: '壶关县', + 140428: '长子县', + 140429: '武乡县', + 140430: '沁县', + 140431: '沁源县', + 140471: '山西长治高新技术产业园区', + 140502: '城区', + 140521: '沁水县', + 140522: '阳城县', + 140524: '陵川县', + 140525: '泽州县', + 140581: '高平市', + 140602: '朔城区', + 140603: '平鲁区', + 140621: '山阴县', + 140622: '应县', + 140623: '右玉县', + 140671: '山西朔州经济开发区', + 140681: '怀仁市', + 140702: '榆次区', + 140703: '太谷区', + 140721: '榆社县', + 140722: '左权县', + 140723: '和顺县', + 140724: '昔阳县', + 140725: '寿阳县', + 140727: '祁县', + 140728: '平遥县', + 140729: '灵石县', + 140781: '介休市', + 140802: '盐湖区', + 140821: '临猗县', + 140822: '万荣县', + 140823: '闻喜县', + 140824: '稷山县', + 140825: '新绛县', + 140826: '绛县', + 140827: '垣曲县', + 140828: '夏县', + 140829: '平陆县', + 140830: '芮城县', + 140881: '永济市', + 140882: '河津市', + 140902: '忻府区', + 140921: '定襄县', + 140922: '五台县', + 140923: '代县', + 140924: '繁峙县', + 140925: '宁武县', + 140926: '静乐县', + 140927: '神池县', + 140928: '五寨县', + 140929: '岢岚县', + 140930: '河曲县', + 140931: '保德县', + 140932: '偏关县', + 140971: '五台山风景名胜区', + 140981: '原平市', + 141002: '尧都区', + 141021: '曲沃县', + 141022: '翼城县', + 141023: '襄汾县', + 141024: '洪洞县', + 141025: '古县', + 141026: '安泽县', + 141027: '浮山县', + 141028: '吉县', + 141029: '乡宁县', + 141030: '大宁县', + 141031: '隰县', + 141032: '永和县', + 141033: '蒲县', + 141034: '汾西县', + 141081: '侯马市', + 141082: '霍州市', + 141102: '离石区', + 141121: '文水县', + 141122: '交城县', + 141123: '兴县', + 141124: '临县', + 141125: '柳林县', + 141126: '石楼县', + 141127: '岚县', + 141128: '方山县', + 141129: '中阳县', + 141130: '交口县', + 141181: '孝义市', + 141182: '汾阳市', + 150102: '新城区', + 150103: '回民区', + 150104: '玉泉区', + 150105: '赛罕区', + 150121: '土默特左旗', + 150122: '托克托县', + 150123: '和林格尔县', + 150124: '清水河县', + 150125: '武川县', + 150172: '呼和浩特经济技术开发区', + 150202: '东河区', + 150203: '昆都仑区', + 150204: '青山区', + 150205: '石拐区', + 150206: '白云鄂博矿区', + 150207: '九原区', + 150221: '土默特右旗', + 150222: '固阳县', + 150223: '达尔罕茂明安联合旗', + 150271: '包头稀土高新技术产业开发区', + 150302: '海勃湾区', + 150303: '海南区', + 150304: '乌达区', + 150402: '红山区', + 150403: '元宝山区', + 150404: '松山区', + 150421: '阿鲁科尔沁旗', + 150422: '巴林左旗', + 150423: '巴林右旗', + 150424: '林西县', + 150425: '克什克腾旗', + 150426: '翁牛特旗', + 150428: '喀喇沁旗', + 150429: '宁城县', + 150430: '敖汉旗', + 150502: '科尔沁区', + 150521: '科尔沁左翼中旗', + 150522: '科尔沁左翼后旗', + 150523: '开鲁县', + 150524: '库伦旗', + 150525: '奈曼旗', + 150526: '扎鲁特旗', + 150571: '通辽经济技术开发区', + 150581: '霍林郭勒市', + 150602: '东胜区', + 150603: '康巴什区', + 150621: '达拉特旗', + 150622: '准格尔旗', + 150623: '鄂托克前旗', + 150624: '鄂托克旗', + 150625: '杭锦旗', + 150626: '乌审旗', + 150627: '伊金霍洛旗', + 150702: '海拉尔区', + 150703: '扎赉诺尔区', + 150721: '阿荣旗', + 150722: '莫力达瓦达斡尔族自治旗', + 150723: '鄂伦春自治旗', + 150724: '鄂温克族自治旗', + 150725: '陈巴尔虎旗', + 150726: '新巴尔虎左旗', + 150727: '新巴尔虎右旗', + 150781: '满洲里市', + 150782: '牙克石市', + 150783: '扎兰屯市', + 150784: '额尔古纳市', + 150785: '根河市', + 150802: '临河区', + 150821: '五原县', + 150822: '磴口县', + 150823: '乌拉特前旗', + 150824: '乌拉特中旗', + 150825: '乌拉特后旗', + 150826: '杭锦后旗', + 150902: '集宁区', + 150921: '卓资县', + 150922: '化德县', + 150923: '商都县', + 150924: '兴和县', + 150925: '凉城县', + 150926: '察哈尔右翼前旗', + 150927: '察哈尔右翼中旗', + 150928: '察哈尔右翼后旗', + 150929: '四子王旗', + 150981: '丰镇市', + 152201: '乌兰浩特市', + 152202: '阿尔山市', + 152221: '科尔沁右翼前旗', + 152222: '科尔沁右翼中旗', + 152223: '扎赉特旗', + 152224: '突泉县', + 152501: '二连浩特市', + 152502: '锡林浩特市', + 152522: '阿巴嘎旗', + 152523: '苏尼特左旗', + 152524: '苏尼特右旗', + 152525: '东乌珠穆沁旗', + 152526: '西乌珠穆沁旗', + 152527: '太仆寺旗', + 152528: '镶黄旗', + 152529: '正镶白旗', + 152530: '正蓝旗', + 152531: '多伦县', + 152571: '乌拉盖管委会', + 152921: '阿拉善左旗', + 152922: '阿拉善右旗', + 152923: '额济纳旗', + 152971: '内蒙古阿拉善经济开发区', + 210102: '和平区', + 210103: '沈河区', + 210104: '大东区', + 210105: '皇姑区', + 210106: '铁西区', + 210111: '苏家屯区', + 210112: '浑南区', + 210113: '沈北新区', + 210114: '于洪区', + 210115: '辽中区', + 210123: '康平县', + 210124: '法库县', + 210181: '新民市', + 210190: '经济技术开发区', + 210202: '中山区', + 210203: '西岗区', + 210204: '沙河口区', + 210211: '甘井子区', + 210212: '旅顺口区', + 210213: '金州区', + 210214: '普兰店区', + 210224: '长海县', + 210281: '瓦房店市', + 210283: '庄河市', + 210302: '铁东区', + 210303: '铁西区', + 210304: '立山区', + 210311: '千山区', + 210321: '台安县', + 210323: '岫岩满族自治县', + 210381: '海城市', + 210390: '高新区', + 210402: '新抚区', + 210403: '东洲区', + 210404: '望花区', + 210411: '顺城区', + 210421: '抚顺县', + 210422: '新宾满族自治县', + 210423: '清原满族自治县', + 210502: '平山区', + 210503: '溪湖区', + 210504: '明山区', + 210505: '南芬区', + 210521: '本溪满族自治县', + 210522: '桓仁满族自治县', + 210602: '元宝区', + 210603: '振兴区', + 210604: '振安区', + 210624: '宽甸满族自治县', + 210681: '东港市', + 210682: '凤城市', + 210702: '古塔区', + 210703: '凌河区', + 210711: '太和区', + 210726: '黑山县', + 210727: '义县', + 210781: '凌海市', + 210782: '北镇市', + 210793: '经济技术开发区', + 210802: '站前区', + 210803: '西市区', + 210804: '鲅鱼圈区', + 210811: '老边区', + 210881: '盖州市', + 210882: '大石桥市', + 210902: '海州区', + 210903: '新邱区', + 210904: '太平区', + 210905: '清河门区', + 210911: '细河区', + 210921: '阜新蒙古族自治县', + 210922: '彰武县', + 211002: '白塔区', + 211003: '文圣区', + 211004: '宏伟区', + 211005: '弓长岭区', + 211011: '太子河区', + 211021: '辽阳县', + 211081: '灯塔市', + 211102: '双台子区', + 211103: '兴隆台区', + 211104: '大洼区', + 211122: '盘山县', + 211202: '银州区', + 211204: '清河区', + 211221: '铁岭县', + 211223: '西丰县', + 211224: '昌图县', + 211281: '调兵山市', + 211282: '开原市', + 211302: '双塔区', + 211303: '龙城区', + 211321: '朝阳县', + 211322: '建平县', + 211324: '喀喇沁左翼蒙古族自治县', + 211381: '北票市', + 211382: '凌源市', + 211402: '连山区', + 211403: '龙港区', + 211404: '南票区', + 211421: '绥中县', + 211422: '建昌县', + 211481: '兴城市', + 220102: '南关区', + 220103: '宽城区', + 220104: '朝阳区', + 220105: '二道区', + 220106: '绿园区', + 220112: '双阳区', + 220113: '九台区', + 220122: '农安县', + 220171: '长春经济技术开发区', + 220172: '长春净月高新技术产业开发区', + 220173: '长春高新技术产业开发区', + 220174: '长春汽车经济技术开发区', + 220182: '榆树市', + 220183: '德惠市', + 220192: '经济技术开发区', + 220202: '昌邑区', + 220203: '龙潭区', + 220204: '船营区', + 220211: '丰满区', + 220221: '永吉县', + 220271: '吉林经济开发区', + 220272: '吉林高新技术产业开发区', + 220281: '蛟河市', + 220282: '桦甸市', + 220283: '舒兰市', + 220284: '磐石市', + 220302: '铁西区', + 220303: '铁东区', + 220322: '梨树县', + 220323: '伊通满族自治县', + 220381: '公主岭市', + 220382: '双辽市', + 220402: '龙山区', + 220403: '西安区', + 220421: '东丰县', + 220422: '东辽县', + 220502: '东昌区', + 220503: '二道江区', + 220521: '通化县', + 220523: '辉南县', + 220524: '柳河县', + 220581: '梅河口市', + 220582: '集安市', + 220602: '浑江区', + 220605: '江源区', + 220621: '抚松县', + 220622: '靖宇县', + 220623: '长白朝鲜族自治县', + 220681: '临江市', + 220702: '宁江区', + 220721: '前郭尔罗斯蒙古族自治县', + 220722: '长岭县', + 220723: '乾安县', + 220771: '吉林松原经济开发区', + 220781: '扶余市', + 220802: '洮北区', + 220821: '镇赉县', + 220822: '通榆县', + 220871: '吉林白城经济开发区', + 220881: '洮南市', + 220882: '大安市', + 222401: '延吉市', + 222402: '图们市', + 222403: '敦化市', + 222404: '珲春市', + 222405: '龙井市', + 222406: '和龙市', + 222424: '汪清县', + 222426: '安图县', + 230102: '道里区', + 230103: '南岗区', + 230104: '道外区', + 230108: '平房区', + 230109: '松北区', + 230110: '香坊区', + 230111: '呼兰区', + 230112: '阿城区', + 230113: '双城区', + 230123: '依兰县', + 230124: '方正县', + 230125: '宾县', + 230126: '巴彦县', + 230127: '木兰县', + 230128: '通河县', + 230129: '延寿县', + 230183: '尚志市', + 230184: '五常市', + 230202: '龙沙区', + 230203: '建华区', + 230204: '铁锋区', + 230205: '昂昂溪区', + 230206: '富拉尔基区', + 230207: '碾子山区', + 230208: '梅里斯达斡尔族区', + 230221: '龙江县', + 230223: '依安县', + 230224: '泰来县', + 230225: '甘南县', + 230227: '富裕县', + 230229: '克山县', + 230230: '克东县', + 230231: '拜泉县', + 230281: '讷河市', + 230302: '鸡冠区', + 230303: '恒山区', + 230304: '滴道区', + 230305: '梨树区', + 230306: '城子河区', + 230307: '麻山区', + 230321: '鸡东县', + 230381: '虎林市', + 230382: '密山市', + 230402: '向阳区', + 230403: '工农区', + 230404: '南山区', + 230405: '兴安区', + 230406: '东山区', + 230407: '兴山区', + 230421: '萝北县', + 230422: '绥滨县', + 230502: '尖山区', + 230503: '岭东区', + 230505: '四方台区', + 230506: '宝山区', + 230521: '集贤县', + 230522: '友谊县', + 230523: '宝清县', + 230524: '饶河县', + 230602: '萨尔图区', + 230603: '龙凤区', + 230604: '让胡路区', + 230605: '红岗区', + 230606: '大同区', + 230621: '肇州县', + 230622: '肇源县', + 230623: '林甸县', + 230624: '杜尔伯特蒙古族自治县', + 230671: '大庆高新技术产业开发区', + 230717: '伊美区', + 230718: '乌翠区', + 230719: '友好区', + 230722: '嘉荫县', + 230723: '汤旺县', + 230724: '丰林县', + 230725: '大箐山县', + 230726: '南岔县', + 230751: '金林区', + 230781: '铁力市', + 230803: '向阳区', + 230804: '前进区', + 230805: '东风区', + 230811: '郊区', + 230822: '桦南县', + 230826: '桦川县', + 230828: '汤原县', + 230881: '同江市', + 230882: '富锦市', + 230883: '抚远市', + 230902: '新兴区', + 230903: '桃山区', + 230904: '茄子河区', + 230921: '勃利县', + 231002: '东安区', + 231003: '阳明区', + 231004: '爱民区', + 231005: '西安区', + 231025: '林口县', + 231081: '绥芬河市', + 231083: '海林市', + 231084: '宁安市', + 231085: '穆棱市', + 231086: '东宁市', + 231102: '爱辉区', + 231123: '逊克县', + 231124: '孙吴县', + 231181: '北安市', + 231182: '五大连池市', + 231183: '嫩江市', + 231202: '北林区', + 231221: '望奎县', + 231222: '兰西县', + 231223: '青冈县', + 231224: '庆安县', + 231225: '明水县', + 231226: '绥棱县', + 231281: '安达市', + 231282: '肇东市', + 231283: '海伦市', + 232701: '漠河市', + 232721: '呼玛县', + 232722: '塔河县', + 232761: '加格达奇区', + 232762: '松岭区', + 232763: '新林区', + 232764: '呼中区', + 310101: '黄浦区', + 310104: '徐汇区', + 310105: '长宁区', + 310106: '静安区', + 310107: '普陀区', + 310109: '虹口区', + 310110: '杨浦区', + 310112: '闵行区', + 310113: '宝山区', + 310114: '嘉定区', + 310115: '浦东新区', + 310116: '金山区', + 310117: '松江区', + 310118: '青浦区', + 310120: '奉贤区', + 310151: '崇明区', + 320102: '玄武区', + 320104: '秦淮区', + 320105: '建邺区', + 320106: '鼓楼区', + 320111: '浦口区', + 320112: '江北新区', + 320113: '栖霞区', + 320114: '雨花台区', + 320115: '江宁区', + 320116: '六合区', + 320117: '溧水区', + 320118: '高淳区', + 320205: '锡山区', + 320206: '惠山区', + 320211: '滨湖区', + 320213: '梁溪区', + 320214: '新吴区', + 320281: '江阴市', + 320282: '宜兴市', + 320302: '鼓楼区', + 320303: '云龙区', + 320305: '贾汪区', + 320311: '泉山区', + 320312: '铜山区', + 320321: '丰县', + 320322: '沛县', + 320324: '睢宁县', + 320371: '徐州经济技术开发区', + 320381: '新沂市', + 320382: '邳州市', + 320391: '工业园区', + 320402: '天宁区', + 320404: '钟楼区', + 320411: '新北区', + 320412: '武进区', + 320413: '金坛区', + 320481: '溧阳市', + 320505: '虎丘区', + 320506: '吴中区', + 320507: '相城区', + 320508: '姑苏区', + 320509: '吴江区', + 320571: '苏州工业园区', + 320581: '常熟市', + 320582: '张家港市', + 320583: '昆山市', + 320585: '太仓市', + 320590: '工业园区', + 320591: '高新区', + 320602: '崇川区', + 320611: '港闸区', + 320612: '通州区', + 320623: '如东县', + 320681: '启东市', + 320682: '如皋市', + 320684: '海门市', + 320685: '海安市', + 320691: '高新区', + 320703: '连云区', + 320706: '海州区', + 320707: '赣榆区', + 320722: '东海县', + 320723: '灌云县', + 320724: '灌南县', + 320771: '连云港经济技术开发区', + 320803: '淮安区', + 320804: '淮阴区', + 320812: '清江浦区', + 320813: '洪泽区', + 320826: '涟水县', + 320830: '盱眙县', + 320831: '金湖县', + 320871: '淮安经济技术开发区', + 320890: '经济开发区', + 320902: '亭湖区', + 320903: '盐都区', + 320904: '大丰区', + 320921: '响水县', + 320922: '滨海县', + 320923: '阜宁县', + 320924: '射阳县', + 320925: '建湖县', + 320971: '盐城经济技术开发区', + 320981: '东台市', + 321002: '广陵区', + 321003: '邗江区', + 321012: '江都区', + 321023: '宝应县', + 321071: '扬州经济技术开发区', + 321081: '仪征市', + 321084: '高邮市', + 321090: '经济开发区', + 321102: '京口区', + 321111: '润州区', + 321112: '丹徒区', + 321150: '镇江新区', + 321181: '丹阳市', + 321182: '扬中市', + 321183: '句容市', + 321202: '海陵区', + 321203: '高港区', + 321204: '姜堰区', + 321271: '泰州医药高新技术产业开发区', + 321281: '兴化市', + 321282: '靖江市', + 321283: '泰兴市', + 321302: '宿城区', + 321311: '宿豫区', + 321322: '沭阳县', + 321323: '泗阳县', + 321324: '泗洪县', + 321371: '宿迁经济技术开发区', + 330102: '上城区', + 330105: '拱墅区', + 330106: '西湖区', + 330108: '滨江区', + 330109: '萧山区', + 330110: '余杭区', + 330111: '富阳区', + 330112: '临安区', + 330113: '临平区', + 330114: '钱塘区', + 330122: '桐庐县', + 330127: '淳安县', + 330182: '建德市', + 330203: '海曙区', + 330205: '江北区', + 330206: '北仑区', + 330211: '镇海区', + 330212: '鄞州区', + 330213: '奉化区', + 330225: '象山县', + 330226: '宁海县', + 330281: '余姚市', + 330282: '慈溪市', + 330302: '鹿城区', + 330303: '龙湾区', + 330304: '瓯海区', + 330305: '洞头区', + 330324: '永嘉县', + 330326: '平阳县', + 330327: '苍南县', + 330328: '文成县', + 330329: '泰顺县', + 330381: '瑞安市', + 330382: '乐清市', + 330383: '龙港市', + 330402: '南湖区', + 330411: '秀洲区', + 330421: '嘉善县', + 330424: '海盐县', + 330481: '海宁市', + 330482: '平湖市', + 330483: '桐乡市', + 330502: '吴兴区', + 330503: '南浔区', + 330521: '德清县', + 330522: '长兴县', + 330523: '安吉县', + 330602: '越城区', + 330603: '柯桥区', + 330604: '上虞区', + 330624: '新昌县', + 330681: '诸暨市', + 330683: '嵊州市', + 330702: '婺城区', + 330703: '金东区', + 330723: '武义县', + 330726: '浦江县', + 330727: '磐安县', + 330781: '兰溪市', + 330782: '义乌市', + 330783: '东阳市', + 330784: '永康市', + 330802: '柯城区', + 330803: '衢江区', + 330822: '常山县', + 330824: '开化县', + 330825: '龙游县', + 330881: '江山市', + 330902: '定海区', + 330903: '普陀区', + 330921: '岱山县', + 330922: '嵊泗县', + 331002: '椒江区', + 331003: '黄岩区', + 331004: '路桥区', + 331022: '三门县', + 331023: '天台县', + 331024: '仙居县', + 331081: '温岭市', + 331082: '临海市', + 331083: '玉环市', + 331102: '莲都区', + 331121: '青田县', + 331122: '缙云县', + 331123: '遂昌县', + 331124: '松阳县', + 331125: '云和县', + 331126: '庆元县', + 331127: '景宁畲族自治县', + 331181: '龙泉市', + 340102: '瑶海区', + 340103: '庐阳区', + 340104: '蜀山区', + 340111: '包河区', + 340121: '长丰县', + 340122: '肥东县', + 340123: '肥西县', + 340124: '庐江县', + 340171: '合肥高新技术产业开发区', + 340172: '合肥经济技术开发区', + 340173: '合肥新站高新技术产业开发区', + 340181: '巢湖市', + 340190: '高新技术开发区', + 340191: '经济技术开发区', + 340202: '镜湖区', + 340207: '鸠江区', + 340209: '弋江区', + 340210: '湾沚区', + 340212: '繁昌区', + 340223: '南陵县', + 340281: '无为市', + 340302: '龙子湖区', + 340303: '蚌山区', + 340304: '禹会区', + 340311: '淮上区', + 340321: '怀远县', + 340322: '五河县', + 340323: '固镇县', + 340371: '蚌埠市高新技术开发区', + 340372: '蚌埠市经济开发区', + 340402: '大通区', + 340403: '田家庵区', + 340404: '谢家集区', + 340405: '八公山区', + 340406: '潘集区', + 340421: '凤台县', + 340422: '寿县', + 340503: '花山区', + 340504: '雨山区', + 340506: '博望区', + 340521: '当涂县', + 340522: '含山县', + 340523: '和县', + 340602: '杜集区', + 340603: '相山区', + 340604: '烈山区', + 340621: '濉溪县', + 340705: '铜官区', + 340706: '义安区', + 340711: '郊区', + 340722: '枞阳县', + 340802: '迎江区', + 340803: '大观区', + 340811: '宜秀区', + 340822: '怀宁县', + 340825: '太湖县', + 340826: '宿松县', + 340827: '望江县', + 340828: '岳西县', + 340881: '桐城市', + 340882: '潜山市', + 341002: '屯溪区', + 341003: '黄山区', + 341004: '徽州区', + 341021: '歙县', + 341022: '休宁县', + 341023: '黟县', + 341024: '祁门县', + 341102: '琅琊区', + 341103: '南谯区', + 341122: '来安县', + 341124: '全椒县', + 341125: '定远县', + 341126: '凤阳县', + 341181: '天长市', + 341182: '明光市', + 341202: '颍州区', + 341203: '颍东区', + 341204: '颍泉区', + 341221: '临泉县', + 341222: '太和县', + 341225: '阜南县', + 341226: '颍上县', + 341271: '阜阳合肥现代产业园区', + 341282: '界首市', + 341302: '埇桥区', + 341321: '砀山县', + 341322: '萧县', + 341323: '灵璧县', + 341324: '泗县', + 341371: '宿州马鞍山现代产业园区', + 341372: '宿州经济技术开发区', + 341390: '经济开发区', + 341502: '金安区', + 341503: '裕安区', + 341504: '叶集区', + 341522: '霍邱县', + 341523: '舒城县', + 341524: '金寨县', + 341525: '霍山县', + 341602: '谯城区', + 341621: '涡阳县', + 341622: '蒙城县', + 341623: '利辛县', + 341702: '贵池区', + 341721: '东至县', + 341722: '石台县', + 341723: '青阳县', + 341802: '宣州区', + 341821: '郎溪县', + 341823: '泾县', + 341824: '绩溪县', + 341825: '旌德县', + 341871: '宣城市经济开发区', + 341881: '宁国市', + 341882: '广德市', + 350102: '鼓楼区', + 350103: '台江区', + 350104: '仓山区', + 350105: '马尾区', + 350111: '晋安区', + 350112: '长乐区', + 350121: '闽侯县', + 350122: '连江县', + 350123: '罗源县', + 350124: '闽清县', + 350125: '永泰县', + 350128: '平潭县', + 350181: '福清市', + 350203: '思明区', + 350205: '海沧区', + 350206: '湖里区', + 350211: '集美区', + 350212: '同安区', + 350213: '翔安区', + 350302: '城厢区', + 350303: '涵江区', + 350304: '荔城区', + 350305: '秀屿区', + 350322: '仙游县', + 350402: '梅列区', + 350403: '三元区', + 350421: '明溪县', + 350423: '清流县', + 350424: '宁化县', + 350425: '大田县', + 350426: '尤溪县', + 350427: '沙县', + 350428: '将乐县', + 350429: '泰宁县', + 350430: '建宁县', + 350481: '永安市', + 350502: '鲤城区', + 350503: '丰泽区', + 350504: '洛江区', + 350505: '泉港区', + 350521: '惠安县', + 350524: '安溪县', + 350525: '永春县', + 350526: '德化县', + 350527: '金门县', + 350581: '石狮市', + 350582: '晋江市', + 350583: '南安市', + 350602: '芗城区', + 350603: '龙文区', + 350622: '云霄县', + 350623: '漳浦县', + 350624: '诏安县', + 350625: '长泰县', + 350626: '东山县', + 350627: '南靖县', + 350628: '平和县', + 350629: '华安县', + 350681: '龙海市', + 350702: '延平区', + 350703: '建阳区', + 350721: '顺昌县', + 350722: '浦城县', + 350723: '光泽县', + 350724: '松溪县', + 350725: '政和县', + 350781: '邵武市', + 350782: '武夷山市', + 350783: '建瓯市', + 350802: '新罗区', + 350803: '永定区', + 350821: '长汀县', + 350823: '上杭县', + 350824: '武平县', + 350825: '连城县', + 350881: '漳平市', + 350902: '蕉城区', + 350921: '霞浦县', + 350922: '古田县', + 350923: '屏南县', + 350924: '寿宁县', + 350925: '周宁县', + 350926: '柘荣县', + 350981: '福安市', + 350982: '福鼎市', + 360102: '东湖区', + 360103: '西湖区', + 360104: '青云谱区', + 360111: '青山湖区', + 360112: '新建区', + 360113: '红谷滩区', + 360121: '南昌县', + 360123: '安义县', + 360124: '进贤县', + 360190: '经济技术开发区', + 360192: '高新区', + 360202: '昌江区', + 360203: '珠山区', + 360222: '浮梁县', + 360281: '乐平市', + 360302: '安源区', + 360313: '湘东区', + 360321: '莲花县', + 360322: '上栗县', + 360323: '芦溪县', + 360402: '濂溪区', + 360403: '浔阳区', + 360404: '柴桑区', + 360423: '武宁县', + 360424: '修水县', + 360425: '永修县', + 360426: '德安县', + 360428: '都昌县', + 360429: '湖口县', + 360430: '彭泽县', + 360481: '瑞昌市', + 360482: '共青城市', + 360483: '庐山市', + 360490: '经济技术开发区', + 360502: '渝水区', + 360521: '分宜县', + 360602: '月湖区', + 360603: '余江区', + 360681: '贵溪市', + 360702: '章贡区', + 360703: '南康区', + 360704: '赣县区', + 360722: '信丰县', + 360723: '大余县', + 360724: '上犹县', + 360725: '崇义县', + 360726: '安远县', + 360728: '定南县', + 360729: '全南县', + 360730: '宁都县', + 360731: '于都县', + 360732: '兴国县', + 360733: '会昌县', + 360734: '寻乌县', + 360735: '石城县', + 360781: '瑞金市', + 360783: '龙南市', + 360802: '吉州区', + 360803: '青原区', + 360821: '吉安县', + 360822: '吉水县', + 360823: '峡江县', + 360824: '新干县', + 360825: '永丰县', + 360826: '泰和县', + 360827: '遂川县', + 360828: '万安县', + 360829: '安福县', + 360830: '永新县', + 360881: '井冈山市', + 360902: '袁州区', + 360921: '奉新县', + 360922: '万载县', + 360923: '上高县', + 360924: '宜丰县', + 360925: '靖安县', + 360926: '铜鼓县', + 360981: '丰城市', + 360982: '樟树市', + 360983: '高安市', + 361002: '临川区', + 361003: '东乡区', + 361021: '南城县', + 361022: '黎川县', + 361023: '南丰县', + 361024: '崇仁县', + 361025: '乐安县', + 361026: '宜黄县', + 361027: '金溪县', + 361028: '资溪县', + 361030: '广昌县', + 361102: '信州区', + 361103: '广丰区', + 361104: '广信区', + 361123: '玉山县', + 361124: '铅山县', + 361125: '横峰县', + 361126: '弋阳县', + 361127: '余干县', + 361128: '鄱阳县', + 361129: '万年县', + 361130: '婺源县', + 361181: '德兴市', + 370102: '历下区', + 370103: '市中区', + 370104: '槐荫区', + 370105: '天桥区', + 370112: '历城区', + 370113: '长清区', + 370114: '章丘区', + 370115: '济阳区', + 370116: '莱芜区', + 370117: '钢城区', + 370124: '平阴县', + 370126: '商河县', + 370171: '济南高新技术产业开发区', + 370190: '高新区', + 370202: '市南区', + 370203: '市北区', + 370211: '黄岛区', + 370212: '崂山区', + 370213: '李沧区', + 370214: '城阳区', + 370215: '即墨区', + 370271: '青岛高新技术产业开发区', + 370281: '胶州市', + 370283: '平度市', + 370285: '莱西市', + 370290: '开发区', + 370302: '淄川区', + 370303: '张店区', + 370304: '博山区', + 370305: '临淄区', + 370306: '周村区', + 370321: '桓台县', + 370322: '高青县', + 370323: '沂源县', + 370402: '市中区', + 370403: '薛城区', + 370404: '峄城区', + 370405: '台儿庄区', + 370406: '山亭区', + 370481: '滕州市', + 370502: '东营区', + 370503: '河口区', + 370505: '垦利区', + 370522: '利津县', + 370523: '广饶县', + 370571: '东营经济技术开发区', + 370572: '东营港经济开发区', + 370602: '芝罘区', + 370611: '福山区', + 370612: '牟平区', + 370613: '莱山区', + 370634: '长岛县', + 370671: '烟台高新技术产业开发区', + 370672: '烟台经济技术开发区', + 370681: '龙口市', + 370682: '莱阳市', + 370683: '莱州市', + 370684: '蓬莱市', + 370685: '招远市', + 370686: '栖霞市', + 370687: '海阳市', + 370690: '开发区', + 370702: '潍城区', + 370703: '寒亭区', + 370704: '坊子区', + 370705: '奎文区', + 370724: '临朐县', + 370725: '昌乐县', + 370772: '潍坊滨海经济技术开发区', + 370781: '青州市', + 370782: '诸城市', + 370783: '寿光市', + 370784: '安丘市', + 370785: '高密市', + 370786: '昌邑市', + 370790: '开发区', + 370791: '高新区', + 370811: '任城区', + 370812: '兖州区', + 370826: '微山县', + 370827: '鱼台县', + 370828: '金乡县', + 370829: '嘉祥县', + 370830: '汶上县', + 370831: '泗水县', + 370832: '梁山县', + 370871: '济宁高新技术产业开发区', + 370881: '曲阜市', + 370883: '邹城市', + 370890: '高新区', + 370902: '泰山区', + 370911: '岱岳区', + 370921: '宁阳县', + 370923: '东平县', + 370982: '新泰市', + 370983: '肥城市', + 371002: '环翠区', + 371003: '文登区', + 371071: '威海火炬高技术产业开发区', + 371072: '威海经济技术开发区', + 371082: '荣成市', + 371083: '乳山市', + 371091: '经济技术开发区', + 371102: '东港区', + 371103: '岚山区', + 371121: '五莲县', + 371122: '莒县', + 371171: '日照经济技术开发区', + 371302: '兰山区', + 371311: '罗庄区', + 371312: '河东区', + 371321: '沂南县', + 371322: '郯城县', + 371323: '沂水县', + 371324: '兰陵县', + 371325: '费县', + 371326: '平邑县', + 371327: '莒南县', + 371328: '蒙阴县', + 371329: '临沭县', + 371371: '临沂高新技术产业开发区', + 371402: '德城区', + 371403: '陵城区', + 371422: '宁津县', + 371423: '庆云县', + 371424: '临邑县', + 371425: '齐河县', + 371426: '平原县', + 371427: '夏津县', + 371428: '武城县', + 371472: '德州运河经济开发区', + 371481: '乐陵市', + 371482: '禹城市', + 371502: '东昌府区', + 371503: '茌平区', + 371521: '阳谷县', + 371522: '莘县', + 371524: '东阿县', + 371525: '冠县', + 371526: '高唐县', + 371581: '临清市', + 371602: '滨城区', + 371603: '沾化区', + 371621: '惠民县', + 371622: '阳信县', + 371623: '无棣县', + 371625: '博兴县', + 371681: '邹平市', + 371702: '牡丹区', + 371703: '定陶区', + 371721: '曹县', + 371722: '单县', + 371723: '成武县', + 371724: '巨野县', + 371725: '郓城县', + 371726: '鄄城县', + 371728: '东明县', + 371771: '菏泽经济技术开发区', + 371772: '菏泽高新技术开发区', + 410102: '中原区', + 410103: '二七区', + 410104: '管城回族区', + 410105: '金水区', + 410106: '上街区', + 410108: '惠济区', + 410122: '中牟县', + 410171: '郑州经济技术开发区', + 410172: '郑州高新技术产业开发区', + 410173: '郑州航空港经济综合实验区', + 410181: '巩义市', + 410182: '荥阳市', + 410183: '新密市', + 410184: '新郑市', + 410185: '登封市', + 410190: '高新技术开发区', + 410191: '经济技术开发区', + 410202: '龙亭区', + 410203: '顺河回族区', + 410204: '鼓楼区', + 410205: '禹王台区', + 410212: '祥符区', + 410221: '杞县', + 410222: '通许县', + 410223: '尉氏县', + 410225: '兰考县', + 410302: '老城区', + 410303: '西工区', + 410304: '瀍河回族区', + 410305: '涧西区', + 410306: '吉利区', + 410311: '洛龙区', + 410322: '孟津县', + 410323: '新安县', + 410324: '栾川县', + 410325: '嵩县', + 410326: '汝阳县', + 410327: '宜阳县', + 410328: '洛宁县', + 410329: '伊川县', + 410381: '偃师市', + 410402: '新华区', + 410403: '卫东区', + 410404: '石龙区', + 410411: '湛河区', + 410421: '宝丰县', + 410422: '叶县', + 410423: '鲁山县', + 410425: '郏县', + 410471: '平顶山高新技术产业开发区', + 410481: '舞钢市', + 410482: '汝州市', + 410502: '文峰区', + 410503: '北关区', + 410505: '殷都区', + 410506: '龙安区', + 410522: '安阳县', + 410523: '汤阴县', + 410526: '滑县', + 410527: '内黄县', + 410581: '林州市', + 410590: '开发区', + 410602: '鹤山区', + 410603: '山城区', + 410611: '淇滨区', + 410621: '浚县', + 410622: '淇县', + 410702: '红旗区', + 410703: '卫滨区', + 410704: '凤泉区', + 410711: '牧野区', + 410721: '新乡县', + 410724: '获嘉县', + 410725: '原阳县', + 410726: '延津县', + 410727: '封丘县', + 410771: '新乡高新技术产业开发区', + 410772: '新乡经济技术开发区', + 410781: '卫辉市', + 410782: '辉县市', + 410783: '长垣市', + 410802: '解放区', + 410803: '中站区', + 410804: '马村区', + 410811: '山阳区', + 410821: '修武县', + 410822: '博爱县', + 410823: '武陟县', + 410825: '温县', + 410871: '焦作城乡一体化示范区', + 410882: '沁阳市', + 410883: '孟州市', + 410902: '华龙区', + 410922: '清丰县', + 410923: '南乐县', + 410926: '范县', + 410927: '台前县', + 410928: '濮阳县', + 410971: '河南濮阳工业园区', + 411002: '魏都区', + 411003: '建安区', + 411024: '鄢陵县', + 411025: '襄城县', + 411071: '许昌经济技术开发区', + 411081: '禹州市', + 411082: '长葛市', + 411102: '源汇区', + 411103: '郾城区', + 411104: '召陵区', + 411121: '舞阳县', + 411122: '临颍县', + 411171: '漯河经济技术开发区', + 411202: '湖滨区', + 411203: '陕州区', + 411221: '渑池县', + 411224: '卢氏县', + 411271: '河南三门峡经济开发区', + 411281: '义马市', + 411282: '灵宝市', + 411302: '宛城区', + 411303: '卧龙区', + 411321: '南召县', + 411322: '方城县', + 411323: '西峡县', + 411324: '镇平县', + 411325: '内乡县', + 411326: '淅川县', + 411327: '社旗县', + 411328: '唐河县', + 411329: '新野县', + 411330: '桐柏县', + 411372: '南阳市城乡一体化示范区', + 411381: '邓州市', + 411402: '梁园区', + 411403: '睢阳区', + 411421: '民权县', + 411422: '睢县', + 411423: '宁陵县', + 411424: '柘城县', + 411425: '虞城县', + 411426: '夏邑县', + 411481: '永城市', + 411502: '浉河区', + 411503: '平桥区', + 411521: '罗山县', + 411522: '光山县', + 411523: '新县', + 411524: '商城县', + 411525: '固始县', + 411526: '潢川县', + 411527: '淮滨县', + 411528: '息县', + 411602: '川汇区', + 411603: '淮阳区', + 411621: '扶沟县', + 411622: '西华县', + 411623: '商水县', + 411624: '沈丘县', + 411625: '郸城县', + 411627: '太康县', + 411628: '鹿邑县', + 411671: '河南周口经济开发区', + 411681: '项城市', + 411690: '经济开发区', + 411702: '驿城区', + 411721: '西平县', + 411722: '上蔡县', + 411723: '平舆县', + 411724: '正阳县', + 411725: '确山县', + 411726: '泌阳县', + 411727: '汝南县', + 411728: '遂平县', + 411729: '新蔡县', + 419001: '济源市', + 420102: '江岸区', + 420103: '江汉区', + 420104: '硚口区', + 420105: '汉阳区', + 420106: '武昌区', + 420107: '青山区', + 420111: '洪山区', + 420112: '东西湖区', + 420113: '汉南区', + 420114: '蔡甸区', + 420115: '江夏区', + 420116: '黄陂区', + 420117: '新洲区', + 420202: '黄石港区', + 420203: '西塞山区', + 420204: '下陆区', + 420205: '铁山区', + 420222: '阳新县', + 420281: '大冶市', + 420302: '茅箭区', + 420303: '张湾区', + 420304: '郧阳区', + 420322: '郧西县', + 420323: '竹山县', + 420324: '竹溪县', + 420325: '房县', + 420381: '丹江口市', + 420502: '西陵区', + 420503: '伍家岗区', + 420504: '点军区', + 420505: '猇亭区', + 420506: '夷陵区', + 420525: '远安县', + 420526: '兴山县', + 420527: '秭归县', + 420528: '长阳土家族自治县', + 420529: '五峰土家族自治县', + 420581: '宜都市', + 420582: '当阳市', + 420583: '枝江市', + 420590: '经济开发区', + 420602: '襄城区', + 420606: '樊城区', + 420607: '襄州区', + 420624: '南漳县', + 420625: '谷城县', + 420626: '保康县', + 420682: '老河口市', + 420683: '枣阳市', + 420684: '宜城市', + 420702: '梁子湖区', + 420703: '华容区', + 420704: '鄂城区', + 420802: '东宝区', + 420804: '掇刀区', + 420822: '沙洋县', + 420881: '钟祥市', + 420882: '京山市', + 420902: '孝南区', + 420921: '孝昌县', + 420922: '大悟县', + 420923: '云梦县', + 420981: '应城市', + 420982: '安陆市', + 420984: '汉川市', + 421002: '沙市区', + 421003: '荆州区', + 421022: '公安县', + 421023: '监利县', + 421024: '江陵县', + 421081: '石首市', + 421083: '洪湖市', + 421087: '松滋市', + 421102: '黄州区', + 421121: '团风县', + 421122: '红安县', + 421123: '罗田县', + 421124: '英山县', + 421125: '浠水县', + 421126: '蕲春县', + 421127: '黄梅县', + 421171: '龙感湖管理区', + 421181: '麻城市', + 421182: '武穴市', + 421202: '咸安区', + 421221: '嘉鱼县', + 421222: '通城县', + 421223: '崇阳县', + 421224: '通山县', + 421281: '赤壁市', + 421303: '曾都区', + 421321: '随县', + 421381: '广水市', + 422801: '恩施市', + 422802: '利川市', + 422822: '建始县', + 422823: '巴东县', + 422825: '宣恩县', + 422826: '咸丰县', + 422827: '来凤县', + 422828: '鹤峰县', + 429004: '仙桃市', + 429005: '潜江市', + 429006: '天门市', + 429021: '神农架林区', + 430102: '芙蓉区', + 430103: '天心区', + 430104: '岳麓区', + 430105: '开福区', + 430111: '雨花区', + 430112: '望城区', + 430121: '长沙县', + 430181: '浏阳市', + 430182: '宁乡市', + 430202: '荷塘区', + 430203: '芦淞区', + 430204: '石峰区', + 430211: '天元区', + 430212: '渌口区', + 430223: '攸县', + 430224: '茶陵县', + 430225: '炎陵县', + 430271: '云龙示范区', + 430281: '醴陵市', + 430302: '雨湖区', + 430304: '岳塘区', + 430321: '湘潭县', + 430373: '湘潭九华示范区', + 430381: '湘乡市', + 430382: '韶山市', + 430405: '珠晖区', + 430406: '雁峰区', + 430407: '石鼓区', + 430408: '蒸湘区', + 430412: '南岳区', + 430421: '衡阳县', + 430422: '衡南县', + 430423: '衡山县', + 430424: '衡东县', + 430426: '祁东县', + 430481: '耒阳市', + 430482: '常宁市', + 430502: '双清区', + 430503: '大祥区', + 430511: '北塔区', + 430522: '新邵县', + 430523: '邵阳县', + 430524: '隆回县', + 430525: '洞口县', + 430527: '绥宁县', + 430528: '新宁县', + 430529: '城步苗族自治县', + 430581: '武冈市', + 430582: '邵东市', + 430602: '岳阳楼区', + 430603: '云溪区', + 430611: '君山区', + 430621: '岳阳县', + 430623: '华容县', + 430624: '湘阴县', + 430626: '平江县', + 430681: '汨罗市', + 430682: '临湘市', + 430702: '武陵区', + 430703: '鼎城区', + 430721: '安乡县', + 430722: '汉寿县', + 430723: '澧县', + 430724: '临澧县', + 430725: '桃源县', + 430726: '石门县', + 430781: '津市市', + 430802: '永定区', + 430811: '武陵源区', + 430821: '慈利县', + 430822: '桑植县', + 430902: '资阳区', + 430903: '赫山区', + 430921: '南县', + 430922: '桃江县', + 430923: '安化县', + 430971: '益阳市大通湖管理区', + 430981: '沅江市', + 431002: '北湖区', + 431003: '苏仙区', + 431021: '桂阳县', + 431022: '宜章县', + 431023: '永兴县', + 431024: '嘉禾县', + 431025: '临武县', + 431026: '汝城县', + 431027: '桂东县', + 431028: '安仁县', + 431081: '资兴市', + 431102: '零陵区', + 431103: '冷水滩区', + 431121: '祁阳县', + 431122: '东安县', + 431123: '双牌县', + 431124: '道县', + 431125: '江永县', + 431126: '宁远县', + 431127: '蓝山县', + 431128: '新田县', + 431129: '江华瑶族自治县', + 431202: '鹤城区', + 431221: '中方县', + 431222: '沅陵县', + 431223: '辰溪县', + 431224: '溆浦县', + 431225: '会同县', + 431226: '麻阳苗族自治县', + 431227: '新晃侗族自治县', + 431228: '芷江侗族自治县', + 431229: '靖州苗族侗族自治县', + 431230: '通道侗族自治县', + 431271: '怀化市洪江管理区', + 431281: '洪江市', + 431302: '娄星区', + 431321: '双峰县', + 431322: '新化县', + 431381: '冷水江市', + 431382: '涟源市', + 433101: '吉首市', + 433122: '泸溪县', + 433123: '凤凰县', + 433124: '花垣县', + 433125: '保靖县', + 433126: '古丈县', + 433127: '永顺县', + 433130: '龙山县', + 440103: '荔湾区', + 440104: '越秀区', + 440105: '海珠区', + 440106: '天河区', + 440111: '白云区', + 440112: '黄埔区', + 440113: '番禺区', + 440114: '花都区', + 440115: '南沙区', + 440117: '从化区', + 440118: '增城区', + 440203: '武江区', + 440204: '浈江区', + 440205: '曲江区', + 440222: '始兴县', + 440224: '仁化县', + 440229: '翁源县', + 440232: '乳源瑶族自治县', + 440233: '新丰县', + 440281: '乐昌市', + 440282: '南雄市', + 440303: '罗湖区', + 440304: '福田区', + 440305: '南山区', + 440306: '宝安区', + 440307: '龙岗区', + 440308: '盐田区', + 440309: '龙华区', + 440310: '坪山区', + 440311: '光明区', + 440402: '香洲区', + 440403: '斗门区', + 440404: '金湾区', + 440507: '龙湖区', + 440511: '金平区', + 440512: '濠江区', + 440513: '潮阳区', + 440514: '潮南区', + 440515: '澄海区', + 440523: '南澳县', + 440604: '禅城区', + 440605: '南海区', + 440606: '顺德区', + 440607: '三水区', + 440608: '高明区', + 440703: '蓬江区', + 440704: '江海区', + 440705: '新会区', + 440781: '台山市', + 440783: '开平市', + 440784: '鹤山市', + 440785: '恩平市', + 440802: '赤坎区', + 440803: '霞山区', + 440804: '坡头区', + 440811: '麻章区', + 440823: '遂溪县', + 440825: '徐闻县', + 440881: '廉江市', + 440882: '雷州市', + 440883: '吴川市', + 440890: '经济技术开发区', + 440902: '茂南区', + 440904: '电白区', + 440981: '高州市', + 440982: '化州市', + 440983: '信宜市', + 441202: '端州区', + 441203: '鼎湖区', + 441204: '高要区', + 441223: '广宁县', + 441224: '怀集县', + 441225: '封开县', + 441226: '德庆县', + 441284: '四会市', + 441302: '惠城区', + 441303: '惠阳区', + 441322: '博罗县', + 441323: '惠东县', + 441324: '龙门县', + 441402: '梅江区', + 441403: '梅县区', + 441422: '大埔县', + 441423: '丰顺县', + 441424: '五华县', + 441426: '平远县', + 441427: '蕉岭县', + 441481: '兴宁市', + 441502: '城区', + 441521: '海丰县', + 441523: '陆河县', + 441581: '陆丰市', + 441602: '源城区', + 441621: '紫金县', + 441622: '龙川县', + 441623: '连平县', + 441624: '和平县', + 441625: '东源县', + 441702: '江城区', + 441704: '阳东区', + 441721: '阳西县', + 441781: '阳春市', + 441802: '清城区', + 441803: '清新区', + 441821: '佛冈县', + 441823: '阳山县', + 441825: '连山壮族瑶族自治县', + 441826: '连南瑶族自治县', + 441881: '英德市', + 441882: '连州市', + 441901: '中堂镇', + 441903: '南城街道', + 441904: '长安镇', + 441905: '东坑镇', + 441906: '樟木头镇', + 441907: '莞城街道', + 441908: '石龙镇', + 441909: '桥头镇', + 441910: '万江街道', + 441911: '麻涌镇', + 441912: '虎门镇', + 441913: '谢岗镇', + 441914: '石碣镇', + 441915: '茶山镇', + 441916: '东城街道', + 441917: '洪梅镇', + 441918: '道滘镇', + 441919: '高埗镇', + 441920: '企石镇', + 441921: '凤岗镇', + 441922: '大岭山镇', + 441923: '松山湖', + 441924: '清溪镇', + 441925: '望牛墩镇', + 441926: '厚街镇', + 441927: '常平镇', + 441928: '寮步镇', + 441929: '石排镇', + 441930: '横沥镇', + 441931: '塘厦镇', + 441932: '黄江镇', + 441933: '大朗镇', + 441934: '东莞港', + 441935: '东莞生态园', + 441990: '沙田镇', + 442001: '南头镇', + 442002: '神湾镇', + 442003: '东凤镇', + 442004: '五桂山街道', + 442005: '黄圃镇', + 442006: '小榄镇', + 442007: '石岐街道', + 442008: '横栏镇', + 442009: '三角镇', + 442010: '三乡镇', + 442011: '港口镇', + 442012: '沙溪镇', + 442013: '板芙镇', + 442015: '东升镇', + 442016: '阜沙镇', + 442017: '民众镇', + 442018: '东区街道', + 442019: '火炬开发区街道办事处', + 442020: '西区街道', + 442021: '南区街道', + 442022: '古镇镇', + 442023: '坦洲镇', + 442024: '大涌镇', + 442025: '南朗镇', + 445102: '湘桥区', + 445103: '潮安区', + 445122: '饶平县', + 445202: '榕城区', + 445203: '揭东区', + 445222: '揭西县', + 445224: '惠来县', + 445281: '普宁市', + 445302: '云城区', + 445303: '云安区', + 445321: '新兴县', + 445322: '郁南县', + 445381: '罗定市', + 450102: '兴宁区', + 450103: '青秀区', + 450105: '江南区', + 450107: '西乡塘区', + 450108: '良庆区', + 450109: '邕宁区', + 450110: '武鸣区', + 450123: '隆安县', + 450124: '马山县', + 450125: '上林县', + 450126: '宾阳县', + 450127: '横县', + 450202: '城中区', + 450203: '鱼峰区', + 450204: '柳南区', + 450205: '柳北区', + 450206: '柳江区', + 450222: '柳城县', + 450223: '鹿寨县', + 450224: '融安县', + 450225: '融水苗族自治县', + 450226: '三江侗族自治县', + 450302: '秀峰区', + 450303: '叠彩区', + 450304: '象山区', + 450305: '七星区', + 450311: '雁山区', + 450312: '临桂区', + 450321: '阳朔县', + 450323: '灵川县', + 450324: '全州县', + 450325: '兴安县', + 450326: '永福县', + 450327: '灌阳县', + 450328: '龙胜各族自治县', + 450329: '资源县', + 450330: '平乐县', + 450332: '恭城瑶族自治县', + 450381: '荔浦市', + 450403: '万秀区', + 450405: '长洲区', + 450406: '龙圩区', + 450421: '苍梧县', + 450422: '藤县', + 450423: '蒙山县', + 450481: '岑溪市', + 450502: '海城区', + 450503: '银海区', + 450512: '铁山港区', + 450521: '合浦县', + 450602: '港口区', + 450603: '防城区', + 450621: '上思县', + 450681: '东兴市', + 450702: '钦南区', + 450703: '钦北区', + 450721: '灵山县', + 450722: '浦北县', + 450802: '港北区', + 450803: '港南区', + 450804: '覃塘区', + 450821: '平南县', + 450881: '桂平市', + 450902: '玉州区', + 450903: '福绵区', + 450921: '容县', + 450922: '陆川县', + 450923: '博白县', + 450924: '兴业县', + 450981: '北流市', + 451002: '右江区', + 451003: '田阳区', + 451022: '田东县', + 451024: '德保县', + 451026: '那坡县', + 451027: '凌云县', + 451028: '乐业县', + 451029: '田林县', + 451030: '西林县', + 451031: '隆林各族自治县', + 451081: '靖西市', + 451082: '平果市', + 451102: '八步区', + 451103: '平桂区', + 451121: '昭平县', + 451122: '钟山县', + 451123: '富川瑶族自治县', + 451202: '金城江区', + 451203: '宜州区', + 451221: '南丹县', + 451222: '天峨县', + 451223: '凤山县', + 451224: '东兰县', + 451225: '罗城仫佬族自治县', + 451226: '环江毛南族自治县', + 451227: '巴马瑶族自治县', + 451228: '都安瑶族自治县', + 451229: '大化瑶族自治县', + 451302: '兴宾区', + 451321: '忻城县', + 451322: '象州县', + 451323: '武宣县', + 451324: '金秀瑶族自治县', + 451381: '合山市', + 451402: '江州区', + 451421: '扶绥县', + 451422: '宁明县', + 451423: '龙州县', + 451424: '大新县', + 451425: '天等县', + 451481: '凭祥市', + 460105: '秀英区', + 460106: '龙华区', + 460107: '琼山区', + 460108: '美兰区', + 460202: '海棠区', + 460203: '吉阳区', + 460204: '天涯区', + 460205: '崖州区', + 460321: '西沙区', + 460322: '南沙区', + 460401: '那大镇', + 460402: '和庆镇', + 460403: '南丰镇', + 460404: '大成镇', + 460405: '雅星镇', + 460406: '兰洋镇', + 460407: '光村镇', + 460408: '木棠镇', + 460409: '海头镇', + 460410: '峨蔓镇', + 460411: '王五镇', + 460412: '白马井镇', + 460413: '中和镇', + 460414: '排浦镇', + 460415: '东成镇', + 460416: '新州镇', + 460417: '洋浦经济开发区', + 460418: '华南热作学院', + 469001: '五指山市', + 469002: '琼海市', + 469005: '文昌市', + 469006: '万宁市', + 469007: '东方市', + 469021: '定安县', + 469022: '屯昌县', + 469023: '澄迈县', + 469024: '临高县', + 469025: '白沙黎族自治县', + 469026: '昌江黎族自治县', + 469027: '乐东黎族自治县', + 469028: '陵水黎族自治县', + 469029: '保亭黎族苗族自治县', + 469030: '琼中黎族苗族自治县', + 500101: '万州区', + 500102: '涪陵区', + 500103: '渝中区', + 500104: '大渡口区', + 500105: '江北区', + 500106: '沙坪坝区', + 500107: '九龙坡区', + 500108: '南岸区', + 500109: '北碚区', + 500110: '綦江区', + 500111: '大足区', + 500112: '渝北区', + 500113: '巴南区', + 500114: '黔江区', + 500115: '长寿区', + 500116: '江津区', + 500117: '合川区', + 500118: '永川区', + 500119: '南川区', + 500120: '璧山区', + 500151: '铜梁区', + 500152: '潼南区', + 500153: '荣昌区', + 500154: '开州区', + 500155: '梁平区', + 500156: '武隆区', + 500229: '城口县', + 500230: '丰都县', + 500231: '垫江县', + 500233: '忠县', + 500235: '云阳县', + 500236: '奉节县', + 500237: '巫山县', + 500238: '巫溪县', + 500240: '石柱土家族自治县', + 500241: '秀山土家族苗族自治县', + 500242: '酉阳土家族苗族自治县', + 500243: '彭水苗族土家族自治县', + 510104: '锦江区', + 510105: '青羊区', + 510106: '金牛区', + 510107: '武侯区', + 510108: '成华区', + 510112: '龙泉驿区', + 510113: '青白江区', + 510114: '新都区', + 510115: '温江区', + 510116: '双流区', + 510117: '郫都区', + 510121: '金堂县', + 510129: '大邑县', + 510131: '蒲江县', + 510132: '新津县', + 510181: '都江堰市', + 510182: '彭州市', + 510183: '邛崃市', + 510184: '崇州市', + 510185: '简阳市', + 510191: '高新区', + 510302: '自流井区', + 510303: '贡井区', + 510304: '大安区', + 510311: '沿滩区', + 510321: '荣县', + 510322: '富顺县', + 510402: '东区', + 510403: '西区', + 510411: '仁和区', + 510421: '米易县', + 510422: '盐边县', + 510502: '江阳区', + 510503: '纳溪区', + 510504: '龙马潭区', + 510521: '泸县', + 510522: '合江县', + 510524: '叙永县', + 510525: '古蔺县', + 510603: '旌阳区', + 510604: '罗江区', + 510623: '中江县', + 510681: '广汉市', + 510682: '什邡市', + 510683: '绵竹市', + 510703: '涪城区', + 510704: '游仙区', + 510705: '安州区', + 510722: '三台县', + 510723: '盐亭县', + 510725: '梓潼县', + 510726: '北川羌族自治县', + 510727: '平武县', + 510781: '江油市', + 510791: '高新区', + 510802: '利州区', + 510811: '昭化区', + 510812: '朝天区', + 510821: '旺苍县', + 510822: '青川县', + 510823: '剑阁县', + 510824: '苍溪县', + 510903: '船山区', + 510904: '安居区', + 510921: '蓬溪县', + 510923: '大英县', + 510981: '射洪市', + 511002: '市中区', + 511011: '东兴区', + 511024: '威远县', + 511025: '资中县', + 511083: '隆昌市', + 511102: '市中区', + 511111: '沙湾区', + 511112: '五通桥区', + 511113: '金口河区', + 511123: '犍为县', + 511124: '井研县', + 511126: '夹江县', + 511129: '沐川县', + 511132: '峨边彝族自治县', + 511133: '马边彝族自治县', + 511181: '峨眉山市', + 511302: '顺庆区', + 511303: '高坪区', + 511304: '嘉陵区', + 511321: '南部县', + 511322: '营山县', + 511323: '蓬安县', + 511324: '仪陇县', + 511325: '西充县', + 511381: '阆中市', + 511402: '东坡区', + 511403: '彭山区', + 511421: '仁寿县', + 511423: '洪雅县', + 511424: '丹棱县', + 511425: '青神县', + 511502: '翠屏区', + 511503: '南溪区', + 511504: '叙州区', + 511523: '江安县', + 511524: '长宁县', + 511525: '高县', + 511526: '珙县', + 511527: '筠连县', + 511528: '兴文县', + 511529: '屏山县', + 511602: '广安区', + 511603: '前锋区', + 511621: '岳池县', + 511622: '武胜县', + 511623: '邻水县', + 511681: '华蓥市', + 511702: '通川区', + 511703: '达川区', + 511722: '宣汉县', + 511723: '开江县', + 511724: '大竹县', + 511725: '渠县', + 511781: '万源市', + 511802: '雨城区', + 511803: '名山区', + 511822: '荥经县', + 511823: '汉源县', + 511824: '石棉县', + 511825: '天全县', + 511826: '芦山县', + 511827: '宝兴县', + 511902: '巴州区', + 511903: '恩阳区', + 511921: '通江县', + 511922: '南江县', + 511923: '平昌县', + 511971: '巴中经济开发区', + 512002: '雁江区', + 512021: '安岳县', + 512022: '乐至县', + 513201: '马尔康市', + 513221: '汶川县', + 513222: '理县', + 513223: '茂县', + 513224: '松潘县', + 513225: '九寨沟县', + 513226: '金川县', + 513227: '小金县', + 513228: '黑水县', + 513230: '壤塘县', + 513231: '阿坝县', + 513232: '若尔盖县', + 513233: '红原县', + 513301: '康定市', + 513322: '泸定县', + 513323: '丹巴县', + 513324: '九龙县', + 513325: '雅江县', + 513326: '道孚县', + 513327: '炉霍县', + 513328: '甘孜县', + 513329: '新龙县', + 513330: '德格县', + 513331: '白玉县', + 513332: '石渠县', + 513333: '色达县', + 513334: '理塘县', + 513335: '巴塘县', + 513336: '乡城县', + 513337: '稻城县', + 513338: '得荣县', + 513401: '西昌市', + 513422: '木里藏族自治县', + 513423: '盐源县', + 513424: '德昌县', + 513425: '会理县', + 513426: '会东县', + 513427: '宁南县', + 513428: '普格县', + 513429: '布拖县', + 513430: '金阳县', + 513431: '昭觉县', + 513432: '喜德县', + 513433: '冕宁县', + 513434: '越西县', + 513435: '甘洛县', + 513436: '美姑县', + 513437: '雷波县', + 520102: '南明区', + 520103: '云岩区', + 520111: '花溪区', + 520112: '乌当区', + 520113: '白云区', + 520115: '观山湖区', + 520121: '开阳县', + 520122: '息烽县', + 520123: '修文县', + 520181: '清镇市', + 520201: '钟山区', + 520203: '六枝特区', + 520221: '水城县', + 520281: '盘州市', + 520302: '红花岗区', + 520303: '汇川区', + 520304: '播州区', + 520322: '桐梓县', + 520323: '绥阳县', + 520324: '正安县', + 520325: '道真仡佬族苗族自治县', + 520326: '务川仡佬族苗族自治县', + 520327: '凤冈县', + 520328: '湄潭县', + 520329: '余庆县', + 520330: '习水县', + 520381: '赤水市', + 520382: '仁怀市', + 520402: '西秀区', + 520403: '平坝区', + 520422: '普定县', + 520423: '镇宁布依族苗族自治县', + 520424: '关岭布依族苗族自治县', + 520425: '紫云苗族布依族自治县', + 520502: '七星关区', + 520521: '大方县', + 520522: '黔西县', + 520523: '金沙县', + 520524: '织金县', + 520525: '纳雍县', + 520526: '威宁彝族回族苗族自治县', + 520527: '赫章县', + 520602: '碧江区', + 520603: '万山区', + 520621: '江口县', + 520622: '玉屏侗族自治县', + 520623: '石阡县', + 520624: '思南县', + 520625: '印江土家族苗族自治县', + 520626: '德江县', + 520627: '沿河土家族自治县', + 520628: '松桃苗族自治县', + 522301: '兴义市', + 522302: '兴仁市', + 522323: '普安县', + 522324: '晴隆县', + 522325: '贞丰县', + 522326: '望谟县', + 522327: '册亨县', + 522328: '安龙县', + 522601: '凯里市', + 522622: '黄平县', + 522623: '施秉县', + 522624: '三穗县', + 522625: '镇远县', + 522626: '岑巩县', + 522627: '天柱县', + 522628: '锦屏县', + 522629: '剑河县', + 522630: '台江县', + 522631: '黎平县', + 522632: '榕江县', + 522633: '从江县', + 522634: '雷山县', + 522635: '麻江县', + 522636: '丹寨县', + 522701: '都匀市', + 522702: '福泉市', + 522722: '荔波县', + 522723: '贵定县', + 522725: '瓮安县', + 522726: '独山县', + 522727: '平塘县', + 522728: '罗甸县', + 522729: '长顺县', + 522730: '龙里县', + 522731: '惠水县', + 522732: '三都水族自治县', + 530102: '五华区', + 530103: '盘龙区', + 530111: '官渡区', + 530112: '西山区', + 530113: '东川区', + 530114: '呈贡区', + 530115: '晋宁区', + 530124: '富民县', + 530125: '宜良县', + 530126: '石林彝族自治县', + 530127: '嵩明县', + 530128: '禄劝彝族苗族自治县', + 530129: '寻甸回族彝族自治县', + 530181: '安宁市', + 530302: '麒麟区', + 530303: '沾益区', + 530304: '马龙区', + 530322: '陆良县', + 530323: '师宗县', + 530324: '罗平县', + 530325: '富源县', + 530326: '会泽县', + 530381: '宣威市', + 530402: '红塔区', + 530403: '江川区', + 530423: '通海县', + 530424: '华宁县', + 530425: '易门县', + 530426: '峨山彝族自治县', + 530427: '新平彝族傣族自治县', + 530428: '元江哈尼族彝族傣族自治县', + 530481: '澄江市', + 530502: '隆阳区', + 530521: '施甸县', + 530523: '龙陵县', + 530524: '昌宁县', + 530581: '腾冲市', + 530602: '昭阳区', + 530621: '鲁甸县', + 530622: '巧家县', + 530623: '盐津县', + 530624: '大关县', + 530625: '永善县', + 530626: '绥江县', + 530627: '镇雄县', + 530628: '彝良县', + 530629: '威信县', + 530681: '水富市', + 530702: '古城区', + 530721: '玉龙纳西族自治县', + 530722: '永胜县', + 530723: '华坪县', + 530724: '宁蒗彝族自治县', + 530802: '思茅区', + 530821: '宁洱哈尼族彝族自治县', + 530822: '墨江哈尼族自治县', + 530823: '景东彝族自治县', + 530824: '景谷傣族彝族自治县', + 530825: '镇沅彝族哈尼族拉祜族自治县', + 530826: '江城哈尼族彝族自治县', + 530827: '孟连傣族拉祜族佤族自治县', + 530828: '澜沧拉祜族自治县', + 530829: '西盟佤族自治县', + 530902: '临翔区', + 530921: '凤庆县', + 530922: '云县', + 530923: '永德县', + 530924: '镇康县', + 530925: '双江拉祜族佤族布朗族傣族自治县', + 530926: '耿马傣族佤族自治县', + 530927: '沧源佤族自治县', + 532301: '楚雄市', + 532322: '双柏县', + 532323: '牟定县', + 532324: '南华县', + 532325: '姚安县', + 532326: '大姚县', + 532327: '永仁县', + 532328: '元谋县', + 532329: '武定县', + 532331: '禄丰县', + 532501: '个旧市', + 532502: '开远市', + 532503: '蒙自市', + 532504: '弥勒市', + 532523: '屏边苗族自治县', + 532524: '建水县', + 532525: '石屏县', + 532527: '泸西县', + 532528: '元阳县', + 532529: '红河县', + 532530: '金平苗族瑶族傣族自治县', + 532531: '绿春县', + 532532: '河口瑶族自治县', + 532601: '文山市', + 532622: '砚山县', + 532623: '西畴县', + 532624: '麻栗坡县', + 532625: '马关县', + 532626: '丘北县', + 532627: '广南县', + 532628: '富宁县', + 532801: '景洪市', + 532822: '勐海县', + 532823: '勐腊县', + 532901: '大理市', + 532922: '漾濞彝族自治县', + 532923: '祥云县', + 532924: '宾川县', + 532925: '弥渡县', + 532926: '南涧彝族自治县', + 532927: '巍山彝族回族自治县', + 532928: '永平县', + 532929: '云龙县', + 532930: '洱源县', + 532931: '剑川县', + 532932: '鹤庆县', + 533102: '瑞丽市', + 533103: '芒市', + 533122: '梁河县', + 533123: '盈江县', + 533124: '陇川县', + 533301: '泸水市', + 533323: '福贡县', + 533324: '贡山独龙族怒族自治县', + 533325: '兰坪白族普米族自治县', + 533401: '香格里拉市', + 533422: '德钦县', + 533423: '维西傈僳族自治县', + 540102: '城关区', + 540103: '堆龙德庆区', + 540104: '达孜区', + 540121: '林周县', + 540122: '当雄县', + 540123: '尼木县', + 540124: '曲水县', + 540127: '墨竹工卡县', + 540202: '桑珠孜区', + 540221: '南木林县', + 540222: '江孜县', + 540223: '定日县', + 540224: '萨迦县', + 540225: '拉孜县', + 540226: '昂仁县', + 540227: '谢通门县', + 540228: '白朗县', + 540229: '仁布县', + 540230: '康马县', + 540231: '定结县', + 540232: '仲巴县', + 540233: '亚东县', + 540234: '吉隆县', + 540235: '聂拉木县', + 540236: '萨嘎县', + 540237: '岗巴县', + 540302: '卡若区', + 540321: '江达县', + 540322: '贡觉县', + 540323: '类乌齐县', + 540324: '丁青县', + 540325: '察雅县', + 540326: '八宿县', + 540327: '左贡县', + 540328: '芒康县', + 540329: '洛隆县', + 540330: '边坝县', + 540402: '巴宜区', + 540421: '工布江达县', + 540422: '米林县', + 540423: '墨脱县', + 540424: '波密县', + 540425: '察隅县', + 540426: '朗县', + 540502: '乃东区', + 540521: '扎囊县', + 540522: '贡嘎县', + 540523: '桑日县', + 540524: '琼结县', + 540525: '曲松县', + 540526: '措美县', + 540527: '洛扎县', + 540528: '加查县', + 540529: '隆子县', + 540530: '错那县', + 540531: '浪卡子县', + 540602: '色尼区', + 540621: '嘉黎县', + 540622: '比如县', + 540623: '聂荣县', + 540624: '安多县', + 540625: '申扎县', + 540626: '索县', + 540627: '班戈县', + 540628: '巴青县', + 540629: '尼玛县', + 540630: '双湖县', + 542521: '普兰县', + 542522: '札达县', + 542523: '噶尔县', + 542524: '日土县', + 542525: '革吉县', + 542526: '改则县', + 542527: '措勤县', + 610102: '新城区', + 610103: '碑林区', + 610104: '莲湖区', + 610111: '灞桥区', + 610112: '未央区', + 610113: '雁塔区', + 610114: '阎良区', + 610115: '临潼区', + 610116: '长安区', + 610117: '高陵区', + 610118: '鄠邑区', + 610122: '蓝田县', + 610124: '周至县', + 610202: '王益区', + 610203: '印台区', + 610204: '耀州区', + 610222: '宜君县', + 610302: '渭滨区', + 610303: '金台区', + 610304: '陈仓区', + 610322: '凤翔县', + 610323: '岐山县', + 610324: '扶风县', + 610326: '眉县', + 610327: '陇县', + 610328: '千阳县', + 610329: '麟游县', + 610330: '凤县', + 610331: '太白县', + 610402: '秦都区', + 610403: '杨陵区', + 610404: '渭城区', + 610422: '三原县', + 610423: '泾阳县', + 610424: '乾县', + 610425: '礼泉县', + 610426: '永寿县', + 610428: '长武县', + 610429: '旬邑县', + 610430: '淳化县', + 610431: '武功县', + 610481: '兴平市', + 610482: '彬州市', + 610502: '临渭区', + 610503: '华州区', + 610522: '潼关县', + 610523: '大荔县', + 610524: '合阳县', + 610525: '澄城县', + 610526: '蒲城县', + 610527: '白水县', + 610528: '富平县', + 610581: '韩城市', + 610582: '华阴市', + 610602: '宝塔区', + 610603: '安塞区', + 610621: '延长县', + 610622: '延川县', + 610625: '志丹县', + 610626: '吴起县', + 610627: '甘泉县', + 610628: '富县', + 610629: '洛川县', + 610630: '宜川县', + 610631: '黄龙县', + 610632: '黄陵县', + 610681: '子长市', + 610702: '汉台区', + 610703: '南郑区', + 610722: '城固县', + 610723: '洋县', + 610724: '西乡县', + 610725: '勉县', + 610726: '宁强县', + 610727: '略阳县', + 610728: '镇巴县', + 610729: '留坝县', + 610730: '佛坪县', + 610802: '榆阳区', + 610803: '横山区', + 610822: '府谷县', + 610824: '靖边县', + 610825: '定边县', + 610826: '绥德县', + 610827: '米脂县', + 610828: '佳县', + 610829: '吴堡县', + 610830: '清涧县', + 610831: '子洲县', + 610881: '神木市', + 610902: '汉滨区', + 610921: '汉阴县', + 610922: '石泉县', + 610923: '宁陕县', + 610924: '紫阳县', + 610925: '岚皋县', + 610926: '平利县', + 610927: '镇坪县', + 610928: '旬阳县', + 610929: '白河县', + 611002: '商州区', + 611021: '洛南县', + 611022: '丹凤县', + 611023: '商南县', + 611024: '山阳县', + 611025: '镇安县', + 611026: '柞水县', + 620102: '城关区', + 620103: '七里河区', + 620104: '西固区', + 620105: '安宁区', + 620111: '红古区', + 620121: '永登县', + 620122: '皋兰县', + 620123: '榆中县', + 620171: '兰州新区', + 620201: '市辖区', + 620290: '雄关区', + 620291: '长城区', + 620292: '镜铁区', + 620293: '新城镇', + 620294: '峪泉镇', + 620295: '文殊镇', + 620302: '金川区', + 620321: '永昌县', + 620402: '白银区', + 620403: '平川区', + 620421: '靖远县', + 620422: '会宁县', + 620423: '景泰县', + 620502: '秦州区', + 620503: '麦积区', + 620521: '清水县', + 620522: '秦安县', + 620523: '甘谷县', + 620524: '武山县', + 620525: '张家川回族自治县', + 620602: '凉州区', + 620621: '民勤县', + 620622: '古浪县', + 620623: '天祝藏族自治县', + 620702: '甘州区', + 620721: '肃南裕固族自治县', + 620722: '民乐县', + 620723: '临泽县', + 620724: '高台县', + 620725: '山丹县', + 620802: '崆峒区', + 620821: '泾川县', + 620822: '灵台县', + 620823: '崇信县', + 620825: '庄浪县', + 620826: '静宁县', + 620881: '华亭市', + 620902: '肃州区', + 620921: '金塔县', + 620922: '瓜州县', + 620923: '肃北蒙古族自治县', + 620924: '阿克塞哈萨克族自治县', + 620981: '玉门市', + 620982: '敦煌市', + 621002: '西峰区', + 621021: '庆城县', + 621022: '环县', + 621023: '华池县', + 621024: '合水县', + 621025: '正宁县', + 621026: '宁县', + 621027: '镇原县', + 621102: '安定区', + 621121: '通渭县', + 621122: '陇西县', + 621123: '渭源县', + 621124: '临洮县', + 621125: '漳县', + 621126: '岷县', + 621202: '武都区', + 621221: '成县', + 621222: '文县', + 621223: '宕昌县', + 621224: '康县', + 621225: '西和县', + 621226: '礼县', + 621227: '徽县', + 621228: '两当县', + 622901: '临夏市', + 622921: '临夏县', + 622922: '康乐县', + 622923: '永靖县', + 622924: '广河县', + 622925: '和政县', + 622926: '东乡族自治县', + 622927: '积石山保安族东乡族撒拉族自治县', + 623001: '合作市', + 623021: '临潭县', + 623022: '卓尼县', + 623023: '舟曲县', + 623024: '迭部县', + 623025: '玛曲县', + 623026: '碌曲县', + 623027: '夏河县', + 630102: '城东区', + 630103: '城中区', + 630104: '城西区', + 630105: '城北区', + 630106: '湟中区', + 630121: '大通回族土族自治县', + 630123: '湟源县', + 630202: '乐都区', + 630203: '平安区', + 630222: '民和回族土族自治县', + 630223: '互助土族自治县', + 630224: '化隆回族自治县', + 630225: '循化撒拉族自治县', + 632221: '门源回族自治县', + 632222: '祁连县', + 632223: '海晏县', + 632224: '刚察县', + 632321: '同仁县', + 632322: '尖扎县', + 632323: '泽库县', + 632324: '河南蒙古族自治县', + 632521: '共和县', + 632522: '同德县', + 632523: '贵德县', + 632524: '兴海县', + 632525: '贵南县', + 632621: '玛沁县', + 632622: '班玛县', + 632623: '甘德县', + 632624: '达日县', + 632625: '久治县', + 632626: '玛多县', + 632701: '玉树市', + 632722: '杂多县', + 632723: '称多县', + 632724: '治多县', + 632725: '囊谦县', + 632726: '曲麻莱县', + 632801: '格尔木市', + 632802: '德令哈市', + 632803: '茫崖市', + 632821: '乌兰县', + 632822: '都兰县', + 632823: '天峻县', + 632857: '大柴旦行政委员会', + 640104: '兴庆区', + 640105: '西夏区', + 640106: '金凤区', + 640121: '永宁县', + 640122: '贺兰县', + 640181: '灵武市', + 640202: '大武口区', + 640205: '惠农区', + 640221: '平罗县', + 640302: '利通区', + 640303: '红寺堡区', + 640323: '盐池县', + 640324: '同心县', + 640381: '青铜峡市', + 640402: '原州区', + 640422: '西吉县', + 640423: '隆德县', + 640424: '泾源县', + 640425: '彭阳县', + 640502: '沙坡头区', + 640521: '中宁县', + 640522: '海原县', + 650102: '天山区', + 650103: '沙依巴克区', + 650104: '新市区', + 650105: '水磨沟区', + 650106: '头屯河区', + 650107: '达坂城区', + 650109: '米东区', + 650121: '乌鲁木齐县', + 650202: '独山子区', + 650203: '克拉玛依区', + 650204: '白碱滩区', + 650205: '乌尔禾区', + 650402: '高昌区', + 650421: '鄯善县', + 650422: '托克逊县', + 650502: '伊州区', + 650521: '巴里坤哈萨克自治县', + 650522: '伊吾县', + 652301: '昌吉市', + 652302: '阜康市', + 652323: '呼图壁县', + 652324: '玛纳斯县', + 652325: '奇台县', + 652327: '吉木萨尔县', + 652328: '木垒哈萨克自治县', + 652701: '博乐市', + 652702: '阿拉山口市', + 652722: '精河县', + 652723: '温泉县', + 652801: '库尔勒市', + 652822: '轮台县', + 652823: '尉犁县', + 652824: '若羌县', + 652825: '且末县', + 652826: '焉耆回族自治县', + 652827: '和静县', + 652828: '和硕县', + 652829: '博湖县', + 652901: '阿克苏市', + 652902: '库车市', + 652922: '温宿县', + 652924: '沙雅县', + 652925: '新和县', + 652926: '拜城县', + 652927: '乌什县', + 652928: '阿瓦提县', + 652929: '柯坪县', + 653001: '阿图什市', + 653022: '阿克陶县', + 653023: '阿合奇县', + 653024: '乌恰县', + 653101: '喀什市', + 653121: '疏附县', + 653122: '疏勒县', + 653123: '英吉沙县', + 653124: '泽普县', + 653125: '莎车县', + 653126: '叶城县', + 653127: '麦盖提县', + 653128: '岳普湖县', + 653129: '伽师县', + 653130: '巴楚县', + 653131: '塔什库尔干塔吉克自治县', + 653201: '和田市', + 653221: '和田县', + 653222: '墨玉县', + 653223: '皮山县', + 653224: '洛浦县', + 653225: '策勒县', + 653226: '于田县', + 653227: '民丰县', + 654002: '伊宁市', + 654003: '奎屯市', + 654004: '霍尔果斯市', + 654021: '伊宁县', + 654022: '察布查尔锡伯自治县', + 654023: '霍城县', + 654024: '巩留县', + 654025: '新源县', + 654026: '昭苏县', + 654027: '特克斯县', + 654028: '尼勒克县', + 654201: '塔城市', + 654202: '乌苏市', + 654221: '额敏县', + 654223: '沙湾县', + 654224: '托里县', + 654225: '裕民县', + 654226: '和布克赛尔蒙古自治县', + 654301: '阿勒泰市', + 654321: '布尔津县', + 654322: '富蕴县', + 654323: '福海县', + 654324: '哈巴河县', + 654325: '青河县', + 654326: '吉木乃县', + 659001: '石河子市', + 659002: '阿拉尔市', + 659003: '图木舒克市', + 659004: '五家渠市', + 659005: '北屯市', + 659006: '铁门关市', + 659007: '双河市', + 659008: '可克达拉市', + 659009: '昆玉市', + 659010: '胡杨河市', + 710101: '中正区', + 710102: '大同区', + 710103: '中山区', + 710104: '松山区', + 710105: '大安区', + 710106: '万华区', + 710107: '信义区', + 710108: '士林区', + 710109: '北投区', + 710110: '内湖区', + 710111: '南港区', + 710112: '文山区', + 710199: '其它区', + 710201: '新兴区', + 710202: '前金区', + 710203: '芩雅区', + 710204: '盐埕区', + 710205: '鼓山区', + 710206: '旗津区', + 710207: '前镇区', + 710208: '三民区', + 710209: '左营区', + 710210: '楠梓区', + 710211: '小港区', + 710241: '苓雅区', + 710242: '仁武区', + 710243: '大社区', + 710244: '冈山区', + 710245: '路竹区', + 710246: '阿莲区', + 710247: '田寮区', + 710248: '燕巢区', + 710249: '桥头区', + 710250: '梓官区', + 710251: '弥陀区', + 710252: '永安区', + 710253: '湖内区', + 710254: '凤山区', + 710255: '大寮区', + 710256: '林园区', + 710257: '鸟松区', + 710258: '大树区', + 710259: '旗山区', + 710260: '美浓区', + 710261: '六龟区', + 710262: '内门区', + 710263: '杉林区', + 710264: '甲仙区', + 710265: '桃源区', + 710266: '那玛夏区', + 710267: '茂林区', + 710268: '茄萣区', + 710299: '其它区', + 710301: '中西区', + 710302: '东区', + 710303: '南区', + 710304: '北区', + 710305: '安平区', + 710306: '安南区', + 710339: '永康区', + 710340: '归仁区', + 710341: '新化区', + 710342: '左镇区', + 710343: '玉井区', + 710344: '楠西区', + 710345: '南化区', + 710346: '仁德区', + 710347: '关庙区', + 710348: '龙崎区', + 710349: '官田区', + 710350: '麻豆区', + 710351: '佳里区', + 710352: '西港区', + 710353: '七股区', + 710354: '将军区', + 710355: '学甲区', + 710356: '北门区', + 710357: '新营区', + 710358: '后壁区', + 710359: '白河区', + 710360: '东山区', + 710361: '六甲区', + 710362: '下营区', + 710363: '柳营区', + 710364: '盐水区', + 710365: '善化区', + 710366: '大内区', + 710367: '山上区', + 710368: '新市区', + 710369: '安定区', + 710399: '其它区', + 710401: '中区', + 710402: '东区', + 710403: '南区', + 710404: '西区', + 710405: '北区', + 710406: '北屯区', + 710407: '西屯区', + 710408: '南屯区', + 710431: '太平区', + 710432: '大里区', + 710433: '雾峰区', + 710434: '乌日区', + 710435: '丰原区', + 710436: '后里区', + 710437: '石冈区', + 710438: '东势区', + 710439: '和平区', + 710440: '新社区', + 710441: '潭子区', + 710442: '大雅区', + 710443: '神冈区', + 710444: '大肚区', + 710445: '沙鹿区', + 710446: '龙井区', + 710447: '梧栖区', + 710448: '清水区', + 710449: '大甲区', + 710450: '外埔区', + 710451: '大安区', + 710499: '其它区', + 710507: '金沙镇', + 710508: '金湖镇', + 710509: '金宁乡', + 710510: '金城镇', + 710511: '烈屿乡', + 710512: '乌坵乡', + 710614: '南投市', + 710615: '中寮乡', + 710616: '草屯镇', + 710617: '国姓乡', + 710618: '埔里镇', + 710619: '仁爱乡', + 710620: '名间乡', + 710621: '集集镇', + 710622: '水里乡', + 710623: '鱼池乡', + 710624: '信义乡', + 710625: '竹山镇', + 710626: '鹿谷乡', + 710701: '仁爱区', + 710702: '信义区', + 710703: '中正区', + 710704: '中山区', + 710705: '安乐区', + 710706: '暖暖区', + 710707: '七堵区', + 710799: '其它区', + 710801: '东区', + 710802: '北区', + 710803: '香山区', + 710899: '其它区', + 710901: '东区', + 710902: '西区', + 710999: '其它区', + 711130: '万里区', + 711132: '板桥区', + 711133: '汐止区', + 711134: '深坑区', + 711135: '石碇区', + 711136: '瑞芳区', + 711137: '平溪区', + 711138: '双溪区', + 711139: '贡寮区', + 711140: '新店区', + 711141: '坪林区', + 711142: '乌来区', + 711143: '永和区', + 711144: '中和区', + 711145: '土城区', + 711146: '三峡区', + 711147: '树林区', + 711148: '莺歌区', + 711149: '三重区', + 711150: '新庄区', + 711151: '泰山区', + 711152: '林口区', + 711153: '芦洲区', + 711154: '五股区', + 711155: '八里区', + 711156: '淡水区', + 711157: '三芝区', + 711158: '石门区', + 711287: '宜兰市', + 711288: '头城镇', + 711289: '礁溪乡', + 711290: '壮围乡', + 711291: '员山乡', + 711292: '罗东镇', + 711293: '三星乡', + 711294: '大同乡', + 711295: '五结乡', + 711296: '冬山乡', + 711297: '苏澳镇', + 711298: '南澳乡', + 711299: '钓鱼台', + 711387: '竹北市', + 711388: '湖口乡', + 711389: '新丰乡', + 711390: '新埔镇', + 711391: '关西镇', + 711392: '芎林乡', + 711393: '宝山乡', + 711394: '竹东镇', + 711395: '五峰乡', + 711396: '横山乡', + 711397: '尖石乡', + 711398: '北埔乡', + 711399: '峨眉乡', + 711414: '中坜区', + 711415: '平镇区', + 711417: '杨梅区', + 711418: '新屋区', + 711419: '观音区', + 711420: '桃园区', + 711421: '龟山区', + 711422: '八德区', + 711423: '大溪区', + 711425: '大园区', + 711426: '芦竹区', + 711487: '中坜市', + 711488: '平镇市', + 711489: '龙潭乡', + 711490: '杨梅市', + 711491: '新屋乡', + 711492: '观音乡', + 711493: '桃园市', + 711494: '龟山乡', + 711495: '八德市', + 711496: '大溪镇', + 711497: '复兴乡', + 711498: '大园乡', + 711499: '芦竹乡', + 711520: '头份市', + 711582: '竹南镇', + 711583: '头份镇', + 711584: '三湾乡', + 711585: '南庄乡', + 711586: '狮潭乡', + 711587: '后龙镇', + 711588: '通霄镇', + 711589: '苑里镇', + 711590: '苗栗市', + 711591: '造桥乡', + 711592: '头屋乡', + 711593: '公馆乡', + 711594: '大湖乡', + 711595: '泰安乡', + 711596: '铜锣乡', + 711597: '三义乡', + 711598: '西湖乡', + 711599: '卓兰镇', + 711736: '员林市', + 711774: '彰化市', + 711775: '芬园乡', + 711776: '花坛乡', + 711777: '秀水乡', + 711778: '鹿港镇', + 711779: '福兴乡', + 711780: '线西乡', + 711781: '和美镇', + 711782: '伸港乡', + 711783: '员林镇', + 711784: '社头乡', + 711785: '永靖乡', + 711786: '埔心乡', + 711787: '溪湖镇', + 711788: '大村乡', + 711789: '埔盐乡', + 711790: '田中镇', + 711791: '北斗镇', + 711792: '田尾乡', + 711793: '埤头乡', + 711794: '溪州乡', + 711795: '竹塘乡', + 711796: '二林镇', + 711797: '大城乡', + 711798: '芳苑乡', + 711799: '二水乡', + 711982: '番路乡', + 711983: '梅山乡', + 711984: '竹崎乡', + 711985: '阿里山乡', + 711986: '中埔乡', + 711987: '大埔乡', + 711988: '水上乡', + 711989: '鹿草乡', + 711990: '太保市', + 711991: '朴子市', + 711992: '东石乡', + 711993: '六脚乡', + 711994: '新港乡', + 711995: '民雄乡', + 711996: '大林镇', + 711997: '溪口乡', + 711998: '义竹乡', + 711999: '布袋镇', + 712180: '斗南镇', + 712181: '大埤乡', + 712182: '虎尾镇', + 712183: '土库镇', + 712184: '褒忠乡', + 712185: '东势乡', + 712186: '台西乡', + 712187: '仑背乡', + 712188: '麦寮乡', + 712189: '斗六市', + 712190: '林内乡', + 712191: '古坑乡', + 712192: '莿桐乡', + 712193: '西螺镇', + 712194: '二仑乡', + 712195: '北港镇', + 712196: '水林乡', + 712197: '口湖乡', + 712198: '四湖乡', + 712199: '元长乡', + 712451: '崁顶乡', + 712467: '屏东市', + 712468: '三地门乡', + 712469: '雾台乡', + 712470: '玛家乡', + 712471: '九如乡', + 712472: '里港乡', + 712473: '高树乡', + 712474: '盐埔乡', + 712475: '长治乡', + 712476: '麟洛乡', + 712477: '竹田乡', + 712478: '内埔乡', + 712479: '万丹乡', + 712480: '潮州镇', + 712481: '泰武乡', + 712482: '来义乡', + 712483: '万峦乡', + 712484: '莰顶乡', + 712485: '新埤乡', + 712486: '南州乡', + 712487: '林边乡', + 712488: '东港镇', + 712489: '琉球乡', + 712490: '佳冬乡', + 712491: '新园乡', + 712492: '枋寮乡', + 712493: '枋山乡', + 712494: '春日乡', + 712495: '狮子乡', + 712496: '车城乡', + 712497: '牡丹乡', + 712498: '恒春镇', + 712499: '满州乡', + 712584: '台东市', + 712585: '绿岛乡', + 712586: '兰屿乡', + 712587: '延平乡', + 712588: '卑南乡', + 712589: '鹿野乡', + 712590: '关山镇', + 712591: '海端乡', + 712592: '池上乡', + 712593: '东河乡', + 712594: '成功镇', + 712595: '长滨乡', + 712596: '金峰乡', + 712597: '大武乡', + 712598: '达仁乡', + 712599: '太麻里乡', + 712686: '花莲市', + 712687: '新城乡', + 712688: '太鲁阁', + 712689: '秀林乡', + 712690: '吉安乡', + 712691: '寿丰乡', + 712692: '凤林镇', + 712693: '光复乡', + 712694: '丰滨乡', + 712695: '瑞穗乡', + 712696: '万荣乡', + 712697: '玉里镇', + 712698: '卓溪乡', + 712699: '富里乡', + 712794: '马公市', + 712795: '西屿乡', + 712796: '望安乡', + 712797: '七美乡', + 712798: '白沙乡', + 712799: '湖西乡', + 712896: '南竿乡', + 712897: '北竿乡', + 712898: '东引乡', + 712899: '莒光乡', + 810101: '中西区', + 810102: '湾仔区', + 810103: '东区', + 810104: '南区', + 810201: '九龙城区', + 810202: '油尖旺区', + 810203: '深水埗区', + 810204: '黄大仙区', + 810205: '观塘区', + 810301: '北区', + 810302: '大埔区', + 810303: '沙田区', + 810304: '西贡区', + 810305: '元朗区', + 810306: '屯门区', + 810307: '荃湾区', + 810308: '葵青区', + 810309: '离岛区', + 820102: '花地玛堂区', + 820103: '花王堂区', + 820104: '望德堂区', + 820105: '大堂区', + 820106: '风顺堂区', + 820202: '嘉模堂区', + 820203: '路氹填海区', + 820204: '圣方济各堂区', +}; + +export const PROVINCE_CODE_TO_NAME_MAP = new Map(); +Object.keys(PROVINCE_LIST).forEach(code => { + PROVINCE_CODE_TO_NAME_MAP.set(code, PROVINCE_LIST[code]); +}); + +export const CITY_CODE_TO_NAME_MAP = new Map(); +Object.keys(CITY_LIST).forEach(code => { + CITY_CODE_TO_NAME_MAP.set(code, CITY_LIST[code]); +}); + +export const COUNTY_CODE_TO_NAME_MAP = new Map(); +Object.keys(COUNTY_LIST).forEach(code => { + COUNTY_CODE_TO_NAME_MAP.set(code, COUNTY_LIST[code]); +}); + +export const CITY_INDEXES_LIST = [ + { + letter: 'A', + data: [ + { + cityCode: '340800', + cityName: '安庆', + keyword: 'ANQING安庆', + }, + { + cityCode: '610900', + cityName: '安康', + keyword: 'ANKANG安康', + }, + { + cityCode: '410500', + cityName: '安阳', + keyword: 'ANYANG安阳', + }, + { + cityCode: '520400', + cityName: '安顺', + keyword: 'ANSHUN安顺', + }, + { + cityCode: '820100', + cityName: '澳门半岛', + keyword: 'AOMENBANDAO澳门半岛', + }, + { + cityCode: '652900', + cityName: '阿克苏地区', + keyword: 'AKESUDEQU阿克苏地区', + }, + { + cityCode: '654300', + cityName: '阿勒泰地区', + keyword: 'ALEITAIDEQU阿勒泰地区', + }, + { + cityCode: '513200', + cityName: '阿坝藏族羌族自治州', + keyword: 'ABACANGZUQIANGZUZIZHIZHOU阿坝藏族羌族自治州', + }, + { + cityCode: '152900', + cityName: '阿拉善盟', + keyword: 'ALASHANMENG阿拉善盟', + }, + { + cityCode: '542500', + cityName: '阿里地区', + keyword: 'ALIDEQU阿里地区', + }, + { + cityCode: '210300', + cityName: '鞍山', + keyword: 'ANSHAN鞍山', + }, + ], + }, + { + letter: 'B', + data: [ + { + cityCode: '341600', + cityName: '亳州', + keyword: 'BOZHOU亳州', + }, + { + cityCode: '130600', + cityName: '保定', + keyword: 'BAODING保定', + }, + { + cityCode: '530500', + cityName: '保山', + keyword: 'BAOSHAN保山', + }, + { + cityCode: '150200', + cityName: '包头', + keyword: 'BAOTOU包头', + }, + { + cityCode: '110100', + cityName: '北京', + keyword: 'BEIJING北京', + }, + { + cityCode: '450500', + cityName: '北海', + keyword: 'BEIHAI北海', + }, + { + cityCode: '652700', + cityName: '博尔塔拉蒙古自治州', + keyword: 'BOERTALAMENGGUZIZHIZHOU博尔塔拉蒙古自治州', + }, + { + cityCode: '610300', + cityName: '宝鸡', + keyword: 'BAOJI宝鸡', + }, + { + cityCode: '511900', + cityName: '巴中', + keyword: 'BAZHONG巴中', + }, + { + cityCode: '150800', + cityName: '巴彦淖尔', + keyword: 'BAYANNAOER巴彦淖尔', + }, + { + cityCode: '652800', + cityName: '巴音郭楞蒙古自治州', + keyword: 'BAYINGUOLENGMENGGUZIZHIZHOU巴音郭楞蒙古自治州', + }, + { + cityCode: '210500', + cityName: '本溪', + keyword: 'BENXI本溪', + }, + { + cityCode: '520500', + cityName: '毕节', + keyword: 'BIJIE毕节', + }, + { + cityCode: '371600', + cityName: '滨州', + keyword: 'BINZHOU滨州', + }, + { + cityCode: '220800', + cityName: '白城', + keyword: 'BAICHENG白城', + }, + { + cityCode: '220600', + cityName: '白山', + keyword: 'BAISHAN白山', + }, + { + cityCode: '620400', + cityName: '白银', + keyword: 'BAIYIN白银', + }, + { + cityCode: '451000', + cityName: '百色', + keyword: 'BAISE百色', + }, + { + cityCode: '340300', + cityName: '蚌埠', + keyword: 'BANGBU蚌埠', + }, + ], + }, + { + letter: 'C', + data: [ + { + cityCode: '500100', + cityName: '重庆', + keyword: 'CHONGQING重庆', + }, + { + cityCode: '451400', + cityName: '崇左', + keyword: 'CHONGZUO崇左', + }, + { + cityCode: '320400', + cityName: '常州', + keyword: 'CHANGZHOU常州', + }, + { + cityCode: '430700', + cityName: '常德', + keyword: 'CHANGDE常德', + }, + { + cityCode: '510100', + cityName: '成都', + keyword: 'CHENGDOU成都', + }, + { + cityCode: '130800', + cityName: '承德', + keyword: 'CHENGDE承德', + }, + { + cityCode: '652300', + cityName: '昌吉回族自治州', + keyword: 'CHANGJIHUIZUZIZHIZHOU昌吉回族自治州', + }, + { + cityCode: '540300', + cityName: '昌都', + keyword: 'CHANGDOU昌都', + }, + { + cityCode: '211300', + cityName: '朝阳', + keyword: 'CHAOYANG朝阳', + }, + { + cityCode: '532300', + cityName: '楚雄彝族自治州', + keyword: 'CHUXIONGYIZUZIZHIZHOU楚雄彝族自治州', + }, + { + cityCode: '341700', + cityName: '池州', + keyword: 'CHIZHOU池州', + }, + { + cityCode: '130900', + cityName: '沧州', + keyword: 'CANGZHOU沧州', + }, + { + cityCode: '341100', + cityName: '滁州', + keyword: 'CHUZHOU滁州', + }, + { + cityCode: '445100', + cityName: '潮州', + keyword: 'CHAOZHOU潮州', + }, + { + cityCode: '150400', + cityName: '赤峰', + keyword: 'CHIFENG赤峰', + }, + { + cityCode: '431000', + cityName: '郴州', + keyword: 'CHENZHOU郴州', + }, + { + cityCode: '220100', + cityName: '长春', + keyword: 'CHANGCHUN长春', + }, + { + cityCode: '430100', + cityName: '长沙', + keyword: 'CHANGSHA长沙', + }, + { + cityCode: '140400', + cityName: '长治', + keyword: 'CHANGZHI长治', + }, + ], + }, + { + letter: 'D', + data: [ + { + cityCode: '441900', + cityName: '东莞', + keyword: 'DONGGUAN东莞', + }, + { + cityCode: '370500', + cityName: '东营', + keyword: 'DONGYING东营', + }, + { + cityCode: '210600', + cityName: '丹东', + keyword: 'DANDONG丹东', + }, + { + cityCode: '460400', + cityName: '儋州', + keyword: 'DANZHOU儋州', + }, + { + cityCode: '232700', + cityName: '大兴安岭地区', + keyword: 'DAXINGANLINGDEQU大兴安岭地区', + }, + { + cityCode: '140200', + cityName: '大同', + keyword: 'DATONG大同', + }, + { + cityCode: '230600', + cityName: '大庆', + keyword: 'DAQING大庆', + }, + { + cityCode: '532900', + cityName: '大理白族自治州', + keyword: 'DALIBAIZUZIZHIZHOU大理白族自治州', + }, + { + cityCode: '210200', + cityName: '大连', + keyword: 'DALIAN大连', + }, + { + cityCode: '621100', + cityName: '定西', + keyword: 'DINGXI定西', + }, + { + cityCode: '533100', + cityName: '德宏傣族景颇族自治州', + keyword: 'DEHONGDAIZUJINGPOZUZIZHIZHOU德宏傣族景颇族自治州', + }, + { + cityCode: '371400', + cityName: '德州', + keyword: 'DEZHOU德州', + }, + { + cityCode: '510600', + cityName: '德阳', + keyword: 'DEYANG德阳', + }, + { + cityCode: '511700', + cityName: '达州', + keyword: 'DAZHOU达州', + }, + { + cityCode: '533400', + cityName: '迪庆藏族自治州', + keyword: 'DIQINGCANGZUZIZHIZHOU迪庆藏族自治州', + }, + ], + }, + { + letter: 'E', + data: [ + { + cityCode: '422800', + cityName: '恩施土家族苗族自治州', + keyword: 'ENSHITUJIAZUMIAOZUZIZHIZHOU恩施土家族苗族自治州', + }, + { + cityCode: '150600', + cityName: '鄂尔多斯', + keyword: 'EERDUOSI鄂尔多斯', + }, + { + cityCode: '420700', + cityName: '鄂州', + keyword: 'EZHOU鄂州', + }, + ], + }, + { + letter: 'F', + data: [ + { + cityCode: '440600', + cityName: '佛山', + keyword: 'FUSHAN佛山', + }, + { + cityCode: '361000', + cityName: '抚州', + keyword: 'FUZHOU抚州', + }, + { + cityCode: '210400', + cityName: '抚顺', + keyword: 'FUSHUN抚顺', + }, + { + cityCode: '350100', + cityName: '福州', + keyword: 'FUZHOU福州', + }, + { + cityCode: '210900', + cityName: '阜新', + keyword: 'FUXIN阜新', + }, + { + cityCode: '341200', + cityName: '阜阳', + keyword: 'FUYANG阜阳', + }, + { + cityCode: '450600', + cityName: '防城港', + keyword: 'FANGCHENGGANG防城港', + }, + ], + }, + { + letter: 'G', + data: [ + { + cityCode: '640400', + cityName: '固原', + keyword: 'GUYUAN固原', + }, + { + cityCode: '510800', + cityName: '广元', + keyword: 'GUANGYUAN广元', + }, + { + cityCode: '511600', + cityName: '广安', + keyword: 'GUANGAN广安', + }, + { + cityCode: '440100', + cityName: '广州', + keyword: 'GUANGZHOU广州', + }, + { + cityCode: '632600', + cityName: '果洛藏族自治州', + keyword: 'GUOLUOCANGZUZIZHIZHOU果洛藏族自治州', + }, + { + cityCode: '450300', + cityName: '桂林', + keyword: 'GUILIN桂林', + }, + { + cityCode: '623000', + cityName: '甘南藏族自治州', + keyword: 'GANNANCANGZUZIZHIZHOU甘南藏族自治州', + }, + { + cityCode: '513300', + cityName: '甘孜藏族自治州', + keyword: 'GANZICANGZUZIZHIZHOU甘孜藏族自治州', + }, + { + cityCode: '450800', + cityName: '贵港', + keyword: 'GUIGANG贵港', + }, + { + cityCode: '520100', + cityName: '贵阳', + keyword: 'GUIYANG贵阳', + }, + { + cityCode: '360700', + cityName: '赣州', + keyword: 'GANZHOU赣州', + }, + { + cityCode: '710200', + cityName: '高雄', + keyword: 'GAOXIONG高雄', + }, + ], + }, + { + letter: 'H', + data: [ + { + cityCode: '340100', + cityName: '合肥', + keyword: 'HEFEI合肥', + }, + { + cityCode: '150700', + cityName: '呼伦贝尔', + keyword: 'HULUNBEIER呼伦贝尔', + }, + { + cityCode: '150100', + cityName: '呼和浩特', + keyword: 'HUHEHAOTE呼和浩特', + }, + { + cityCode: '653200', + cityName: '和田地区', + keyword: 'HETIANDEQU和田地区', + }, + { + cityCode: '650500', + cityName: '哈密', + keyword: 'HAMI哈密', + }, + { + cityCode: '230100', + cityName: '哈尔滨', + keyword: 'HAERBIN哈尔滨', + }, + { + cityCode: '431200', + cityName: '怀化', + keyword: 'HUAIHUA怀化', + }, + { + cityCode: '441300', + cityName: '惠州', + keyword: 'HUIZHOU惠州', + }, + { + cityCode: '330100', + cityName: '杭州', + keyword: 'HANGZHOU杭州', + }, + { + cityCode: '610700', + cityName: '汉中', + keyword: 'HANZHONG汉中', + }, + { + cityCode: '451200', + cityName: '河池', + keyword: 'HECHI河池', + }, + { + cityCode: '441600', + cityName: '河源', + keyword: 'HEYUAN河源', + }, + { + cityCode: '630200', + cityName: '海东', + keyword: 'HAIDONG海东', + }, + { + cityCode: '632200', + cityName: '海北藏族自治州', + keyword: 'HAIBEICANGZUZIZHIZHOU海北藏族自治州', + }, + { + cityCode: '632500', + cityName: '海南藏族自治州', + keyword: 'HAINANCANGZUZIZHIZHOU海南藏族自治州', + }, + { + cityCode: '460100', + cityName: '海口', + keyword: 'HAIKOU海口', + }, + { + cityCode: '632800', + cityName: '海西蒙古族藏族自治州', + keyword: 'HAIXIMENGGUZUCANGZUZIZHIZHOU海西蒙古族藏族自治州', + }, + { + cityCode: '340600', + cityName: '淮北', + keyword: 'HUAIBEI淮北', + }, + { + cityCode: '340400', + cityName: '淮南', + keyword: 'HUAINAN淮南', + }, + { + cityCode: '320800', + cityName: '淮安', + keyword: 'HUAIAN淮安', + }, + { + cityCode: '330500', + cityName: '湖州', + keyword: 'HUZHOU湖州', + }, + { + cityCode: '532500', + cityName: '红河哈尼族彝族自治州', + keyword: 'HONGHEHANIZUYIZUZIZHIZHOU红河哈尼族彝族自治州', + }, + { + cityCode: '712600', + cityName: '花莲县', + keyword: 'HUALIANXIAN花莲县', + }, + { + cityCode: '371700', + cityName: '菏泽', + keyword: 'HEZE菏泽', + }, + { + cityCode: '211400', + cityName: '葫芦岛', + keyword: 'HULUDAO葫芦岛', + }, + { + cityCode: '131100', + cityName: '衡水', + keyword: 'HENGSHUI衡水', + }, + { + cityCode: '430400', + cityName: '衡阳', + keyword: 'HENGYANG衡阳', + }, + { + cityCode: '451100', + cityName: '贺州', + keyword: 'HEZHOU贺州', + }, + { + cityCode: '130400', + cityName: '邯郸', + keyword: 'HANDAN邯郸', + }, + { + cityCode: '410600', + cityName: '鹤壁', + keyword: 'HEBI鹤壁', + }, + { + cityCode: '230400', + cityName: '鹤岗', + keyword: 'HEGANG鹤岗', + }, + { + cityCode: '421100', + cityName: '黄冈', + keyword: 'HUANGGANG黄冈', + }, + { + cityCode: '632300', + cityName: '黄南藏族自治州', + keyword: 'HUANGNANCANGZUZIZHIZHOU黄南藏族自治州', + }, + { + cityCode: '341000', + cityName: '黄山', + keyword: 'HUANGSHAN黄山', + }, + { + cityCode: '420200', + cityName: '黄石', + keyword: 'HUANGSHI黄石', + }, + { + cityCode: '231100', + cityName: '黑河', + keyword: 'HEIHE黑河', + }, + ], + }, + { + letter: 'J', + data: [ + { + cityCode: '360400', + cityName: '九江', + keyword: 'JIUJIANG九江', + }, + { + cityCode: '810200', + cityName: '九龙', + keyword: 'JIULONG九龙', + }, + { + cityCode: '230800', + cityName: '佳木斯', + keyword: 'JIAMUSI佳木斯', + }, + { + cityCode: '360800', + cityName: '吉安', + keyword: 'JIAN吉安', + }, + { + cityCode: '220200', + cityName: '吉林', + keyword: 'JILIN吉林', + }, + { + cityCode: '710900', + cityName: '嘉义', + keyword: 'JIAYI嘉义', + }, + { + cityCode: '711900', + cityName: '嘉义县', + keyword: 'JIAYIXIAN嘉义县', + }, + { + cityCode: '330400', + cityName: '嘉兴', + keyword: 'JIAXING嘉兴', + }, + { + cityCode: '620200', + cityName: '嘉峪关', + keyword: 'JIAYUGUAN嘉峪关', + }, + { + cityCode: '710700', + cityName: '基隆', + keyword: 'JILONG基隆', + }, + { + cityCode: '445200', + cityName: '揭阳', + keyword: 'JIEYANG揭阳', + }, + { + cityCode: '140700', + cityName: '晋中', + keyword: 'JINZHONG晋中', + }, + { + cityCode: '140500', + cityName: '晋城', + keyword: 'JINCHENG晋城', + }, + { + cityCode: '360200', + cityName: '景德镇', + keyword: 'JINGDEZHEN景德镇', + }, + { + cityCode: '440700', + cityName: '江门', + keyword: 'JIANGMEN江门', + }, + { + cityCode: '370100', + cityName: '济南', + keyword: 'JINAN济南', + }, + { + cityCode: '370800', + cityName: '济宁', + keyword: 'JINING济宁', + }, + { + cityCode: '410800', + cityName: '焦作', + keyword: 'JIAOZUO焦作', + }, + { + cityCode: '421000', + cityName: '荆州', + keyword: 'JINGZHOU荆州', + }, + { + cityCode: '420800', + cityName: '荆门', + keyword: 'JINGMEN荆门', + }, + { + cityCode: '620900', + cityName: '酒泉', + keyword: 'JIUQUAN酒泉', + }, + { + cityCode: '330700', + cityName: '金华', + keyword: 'JINHUA金华', + }, + { + cityCode: '620300', + cityName: '金昌', + keyword: 'JINCHANG金昌', + }, + { + cityCode: '710500', + cityName: '金门县', + keyword: 'JINMENXIAN金门县', + }, + { + cityCode: '210700', + cityName: '锦州', + keyword: 'JINZHOU锦州', + }, + { + cityCode: '230300', + cityName: '鸡西', + keyword: 'JIXI鸡西', + }, + ], + }, + { + letter: 'K', + data: [ + { + cityCode: '653000', + cityName: '克孜勒苏柯尔克孜自治州', + keyword: 'KEZILEISUKEERKEZIZIZHIZHOU克孜勒苏柯尔克孜自治州', + }, + { + cityCode: '650200', + cityName: '克拉玛依', + keyword: 'KELAMAYI克拉玛依', + }, + { + cityCode: '653100', + cityName: '喀什地区', + keyword: 'KASHENDEQU喀什地区', + }, + { + cityCode: '410200', + cityName: '开封', + keyword: 'KAIFENG开封', + }, + { + cityCode: '530100', + cityName: '昆明', + keyword: 'KUNMING昆明', + }, + ], + }, + { + letter: 'L', + data: [ + { + cityCode: '622900', + cityName: '临夏回族自治州', + keyword: 'LINXIAHUIZUZIZHIZHOU临夏回族自治州', + }, + { + cityCode: '141000', + cityName: '临汾', + keyword: 'LINFEN临汾', + }, + { + cityCode: '371300', + cityName: '临沂', + keyword: 'LINYI临沂', + }, + { + cityCode: '530900', + cityName: '临沧', + keyword: 'LINCANG临沧', + }, + { + cityCode: '331100', + cityName: '丽水', + keyword: 'LISHUI丽水', + }, + { + cityCode: '530700', + cityName: '丽江', + keyword: 'LIJIANG丽江', + }, + { + cityCode: '511100', + cityName: '乐山', + keyword: 'LESHAN乐山', + }, + { + cityCode: '341500', + cityName: '六安', + keyword: 'LIUAN六安', + }, + { + cityCode: '520200', + cityName: '六盘水', + keyword: 'LIUPANSHUI六盘水', + }, + { + cityCode: '620100', + cityName: '兰州', + keyword: 'LANZHOU兰州', + }, + { + cityCode: '513400', + cityName: '凉山彝族自治州', + keyword: 'LIANGSHANYIZUZIZHIZHOU凉山彝族自治州', + }, + { + cityCode: '141100', + cityName: '吕梁', + keyword: 'LVLIANG吕梁', + }, + { + cityCode: '431300', + cityName: '娄底', + keyword: 'LOUDI娄底', + }, + { + cityCode: '131000', + cityName: '廊坊', + keyword: 'LANGFANG廊坊', + }, + { + cityCode: '540100', + cityName: '拉萨', + keyword: 'LASA拉萨', + }, + { + cityCode: '451300', + cityName: '来宾', + keyword: 'LAIBIN来宾', + }, + { + cityCode: '540400', + cityName: '林芝', + keyword: 'LINZHI林芝', + }, + { + cityCode: '450200', + cityName: '柳州', + keyword: 'LIUZHOU柳州', + }, + { + cityCode: '510500', + cityName: '泸州', + keyword: 'LUZHOU泸州', + }, + { + cityCode: '410300', + cityName: '洛阳', + keyword: 'LUOYANG洛阳', + }, + { + cityCode: '411100', + cityName: '漯河', + keyword: 'LUOHE漯河', + }, + { + cityCode: '820200', + cityName: '离岛', + keyword: 'LIDAO离岛', + }, + { + cityCode: '371500', + cityName: '聊城', + keyword: 'LIAOCHENG聊城', + }, + { + cityCode: '220400', + cityName: '辽源', + keyword: 'LIAOYUAN辽源', + }, + { + cityCode: '211000', + cityName: '辽阳', + keyword: 'LIAOYANG辽阳', + }, + { + cityCode: '320700', + cityName: '连云港', + keyword: 'LIANYUNGANG连云港', + }, + { + cityCode: '712800', + cityName: '连江县', + keyword: 'LIANJIANGXIAN连江县', + }, + { + cityCode: '621200', + cityName: '陇南', + keyword: 'LONGNAN陇南', + }, + { + cityCode: '350800', + cityName: '龙岩', + keyword: 'LONGYAN龙岩', + }, + ], + }, + { + letter: 'M', + data: [ + { + cityCode: '441400', + cityName: '梅州', + keyword: 'MEIZHOU梅州', + }, + { + cityCode: '231000', + cityName: '牡丹江', + keyword: 'MUDANJIANG牡丹江', + }, + { + cityCode: '511400', + cityName: '眉山', + keyword: 'MEISHAN眉山', + }, + { + cityCode: '510700', + cityName: '绵阳', + keyword: 'MIANYANG绵阳', + }, + { + cityCode: '711500', + cityName: '苗栗县', + keyword: 'MIAOLIXIAN苗栗县', + }, + { + cityCode: '440900', + cityName: '茂名', + keyword: 'MAOMING茂名', + }, + { + cityCode: '340500', + cityName: '马鞍山', + keyword: 'MAANSHAN马鞍山', + }, + ], + }, + { + letter: 'N', + data: [ + { + cityCode: '511000', + cityName: '内江', + keyword: 'NEIJIANG内江', + }, + { + cityCode: '320100', + cityName: '南京', + keyword: 'NANJING南京', + }, + { + cityCode: '511300', + cityName: '南充', + keyword: 'NANCHONG南充', + }, + { + cityCode: '450100', + cityName: '南宁', + keyword: 'NANNING南宁', + }, + { + cityCode: '350700', + cityName: '南平', + keyword: 'NANPING南平', + }, + { + cityCode: '710600', + cityName: '南投县', + keyword: 'NANTOUXIAN南投县', + }, + { + cityCode: '360100', + cityName: '南昌', + keyword: 'NANCHANG南昌', + }, + { + cityCode: '320600', + cityName: '南通', + keyword: 'NANTONG南通', + }, + { + cityCode: '411300', + cityName: '南阳', + keyword: 'NANYANG南阳', + }, + { + cityCode: '350900', + cityName: '宁德', + keyword: 'NINGDE宁德', + }, + { + cityCode: '330200', + cityName: '宁波', + keyword: 'NINGBO宁波', + }, + { + cityCode: '533300', + cityName: '怒江傈僳族自治州', + keyword: 'NUJIANGLISUZUZIZHIZHOU怒江傈僳族自治州', + }, + { + cityCode: '540600', + cityName: '那曲', + keyword: 'NAQU那曲', + }, + ], + }, + { + letter: 'P', + data: [ + { + cityCode: '712400', + cityName: '屏东县', + keyword: 'PINGDONGXIAN屏东县', + }, + { + cityCode: '620800', + cityName: '平凉', + keyword: 'PINGLIANG平凉', + }, + { + cityCode: '410400', + cityName: '平顶山', + keyword: 'PINGDINGSHAN平顶山', + }, + { + cityCode: '510400', + cityName: '攀枝花', + keyword: 'PANZHIHUA攀枝花', + }, + { + cityCode: '530800', + cityName: '普洱', + keyword: 'PUER普洱', + }, + { + cityCode: '712700', + cityName: '澎湖县', + keyword: 'PENGHUXIAN澎湖县', + }, + { + cityCode: '410900', + cityName: '濮阳', + keyword: 'PUYANG濮阳', + }, + { + cityCode: '211100', + cityName: '盘锦', + keyword: 'PANJIN盘锦', + }, + { + cityCode: '350300', + cityName: '莆田', + keyword: 'PUTIAN莆田', + }, + { + cityCode: '360300', + cityName: '萍乡', + keyword: 'PINGXIANG萍乡', + }, + ], + }, + { + letter: 'Q', + data: [ + { + cityCode: '230900', + cityName: '七台河', + keyword: 'QITAIHE七台河', + }, + { + cityCode: '621000', + cityName: '庆阳', + keyword: 'QINGYANG庆阳', + }, + { + cityCode: '530300', + cityName: '曲靖', + keyword: 'QUJING曲靖', + }, + { + cityCode: '350500', + cityName: '泉州', + keyword: 'QUANZHOU泉州', + }, + { + cityCode: '441800', + cityName: '清远', + keyword: 'QINGYUAN清远', + }, + { + cityCode: '130300', + cityName: '秦皇岛', + keyword: 'QINHUANGDAO秦皇岛', + }, + { + cityCode: '330800', + cityName: '衢州', + keyword: 'QUZHOU衢州', + }, + { + cityCode: '450700', + cityName: '钦州', + keyword: 'QINZHOU钦州', + }, + { + cityCode: '370200', + cityName: '青岛', + keyword: 'QINGDAO青岛', + }, + { + cityCode: '522600', + cityName: '黔东南苗族侗族自治州', + keyword: 'QIANDONGNANMIAOZUDONGZUZIZHIZHOU黔东南苗族侗族自治州', + }, + { + cityCode: '522700', + cityName: '黔南布依族苗族自治州', + keyword: 'QIANNANBUYIZUMIAOZUZIZHIZHOU黔南布依族苗族自治州', + }, + { + cityCode: '522300', + cityName: '黔西南布依族苗族自治州', + keyword: 'QIANXINANBUYIZUMIAOZUZIZHIZHOU黔西南布依族苗族自治州', + }, + { + cityCode: '230200', + cityName: '齐齐哈尔', + keyword: 'QIQIHAER齐齐哈尔', + }, + ], + }, + { + letter: 'R', + data: [ + { + cityCode: '540200', + cityName: '日喀则', + keyword: 'RIKAZE日喀则', + }, + { + cityCode: '371100', + cityName: '日照', + keyword: 'RIZHAO日照', + }, + ], + }, + { + letter: 'S', + data: [ + { + cityCode: '460200', + cityName: '三亚', + keyword: 'SANYA三亚', + }, + { + cityCode: '350400', + cityName: '三明', + keyword: 'SANMING三明', + }, + { + cityCode: '460300', + cityName: '三沙', + keyword: 'SANSHA三沙', + }, + { + cityCode: '411200', + cityName: '三门峡', + keyword: 'SANMENXIA三门峡', + }, + { + cityCode: '310100', + cityName: '上海', + keyword: 'SHANGHAI上海', + }, + { + cityCode: '361100', + cityName: '上饶', + keyword: 'SHANGRAO上饶', + }, + { + cityCode: '420300', + cityName: '十堰', + keyword: 'SHIYAN十堰', + }, + { + cityCode: '350200', + cityName: '厦门', + keyword: 'SHAMEN厦门', + }, + { + cityCode: '230500', + cityName: '双鸭山', + keyword: 'SHUANGYASHAN双鸭山', + }, + { + cityCode: '411400', + cityName: '商丘', + keyword: 'SHANGQIU商丘', + }, + { + cityCode: '611000', + cityName: '商洛', + keyword: 'SHANGLUO商洛', + }, + { + cityCode: '220300', + cityName: '四平', + keyword: 'SIPING四平', + }, + { + cityCode: '341300', + cityName: '宿州', + keyword: 'SUZHOU宿州', + }, + { + cityCode: '321300', + cityName: '宿迁', + keyword: 'SUQIAN宿迁', + }, + { + cityCode: '540500', + cityName: '山南', + keyword: 'SHANNAN山南', + }, + { + cityCode: '140600', + cityName: '朔州', + keyword: 'SHUOZHOU朔州', + }, + { + cityCode: '220700', + cityName: '松原', + keyword: 'SONGYUAN松原', + }, + { + cityCode: '440500', + cityName: '汕头', + keyword: 'SHANTOU汕头', + }, + { + cityCode: '441500', + cityName: '汕尾', + keyword: 'SHANWEI汕尾', + }, + { + cityCode: '210100', + cityName: '沈阳', + keyword: 'SHENYANG沈阳', + }, + { + cityCode: '440300', + cityName: '深圳', + keyword: 'SHENZHEN深圳', + }, + { + cityCode: '419000', + cityName: '省直辖县', + keyword: 'SHENGZHIXIAXIAN省直辖县', + }, + { + cityCode: '429000', + cityName: '省直辖县', + keyword: 'SHENGZHIXIAXIAN省直辖县', + }, + { + cityCode: '469000', + cityName: '省直辖县', + keyword: 'SHENGZHIXIAXIAN省直辖县', + }, + { + cityCode: '640200', + cityName: '石嘴山', + keyword: 'SHIZUISHAN石嘴山', + }, + { + cityCode: '130100', + cityName: '石家庄', + keyword: 'SHIJIAZHUANG石家庄', + }, + { + cityCode: '330600', + cityName: '绍兴', + keyword: 'SHAOXING绍兴', + }, + { + cityCode: '231200', + cityName: '绥化', + keyword: 'SUIHUA绥化', + }, + { + cityCode: '320500', + cityName: '苏州', + keyword: 'SUZHOU苏州', + }, + { + cityCode: '510900', + cityName: '遂宁', + keyword: 'SUINING遂宁', + }, + { + cityCode: '430500', + cityName: '邵阳', + keyword: 'SHAOYANG邵阳', + }, + { + cityCode: '421300', + cityName: '随州', + keyword: 'SUIZHOU随州', + }, + { + cityCode: '440200', + cityName: '韶关', + keyword: 'SHAOGUAN韶关', + }, + ], + }, + { + letter: 'T', + data: [ + { + cityCode: '712500', + cityName: '台东县', + keyword: 'TAIDONGXIAN台东县', + }, + { + cityCode: '710400', + cityName: '台中', + keyword: 'TAIZHONG台中', + }, + { + cityCode: '710100', + cityName: '台北', + keyword: 'TAIBEI台北', + }, + { + cityCode: '710300', + cityName: '台南', + keyword: 'TAINAN台南', + }, + { + cityCode: '331000', + cityName: '台州', + keyword: 'TAIZHOU台州', + }, + { + cityCode: '650400', + cityName: '吐鲁番', + keyword: 'TULUFAN吐鲁番', + }, + { + cityCode: '130200', + cityName: '唐山', + keyword: 'TANGSHAN唐山', + }, + { + cityCode: '654200', + cityName: '塔城地区', + keyword: 'TACHENGDEQU塔城地区', + }, + { + cityCode: '620500', + cityName: '天水', + keyword: 'TIANSHUI天水', + }, + { + cityCode: '120100', + cityName: '天津', + keyword: 'TIANJIN天津', + }, + { + cityCode: '140100', + cityName: '太原', + keyword: 'TAIYUAN太原', + }, + { + cityCode: '711400', + cityName: '桃园', + keyword: 'TAOYUAN桃园', + }, + { + cityCode: '370900', + cityName: '泰安', + keyword: 'TAIAN泰安', + }, + { + cityCode: '321200', + cityName: '泰州', + keyword: 'TAIZHOU泰州', + }, + { + cityCode: '220500', + cityName: '通化', + keyword: 'TONGHUA通化', + }, + { + cityCode: '150500', + cityName: '通辽', + keyword: 'TONGLIAO通辽', + }, + { + cityCode: '211200', + cityName: '铁岭', + keyword: 'TIELING铁岭', + }, + { + cityCode: '520600', + cityName: '铜仁', + keyword: 'TONGREN铜仁', + }, + { + cityCode: '610200', + cityName: '铜川', + keyword: 'TONGCHUAN铜川', + }, + { + cityCode: '340700', + cityName: '铜陵', + keyword: 'TONGLING铜陵', + }, + ], + }, + { + letter: 'W', + data: [ + { + cityCode: '150900', + cityName: '乌兰察布', + keyword: 'WULANCHABU乌兰察布', + }, + { + cityCode: '150300', + cityName: '乌海', + keyword: 'WUHAI乌海', + }, + { + cityCode: '650100', + cityName: '乌鲁木齐', + keyword: 'WULUMUQI乌鲁木齐', + }, + { + cityCode: '640300', + cityName: '吴忠', + keyword: 'WUZHONG吴忠', + }, + { + cityCode: '371000', + cityName: '威海', + keyword: 'WEIHAI威海', + }, + { + cityCode: '532600', + cityName: '文山壮族苗族自治州', + keyword: 'WENSHANZHUANGZUMIAOZUZIZHIZHOU文山壮族苗族自治州', + }, + { + cityCode: '320200', + cityName: '无锡', + keyword: 'WUXI无锡', + }, + { + cityCode: '450400', + cityName: '梧州', + keyword: 'WUZHOU梧州', + }, + { + cityCode: '620600', + cityName: '武威', + keyword: 'WUWEI武威', + }, + { + cityCode: '420100', + cityName: '武汉', + keyword: 'WUHAN武汉', + }, + { + cityCode: '330300', + cityName: '温州', + keyword: 'WENZHOU温州', + }, + { + cityCode: '610500', + cityName: '渭南', + keyword: 'WEINAN渭南', + }, + { + cityCode: '370700', + cityName: '潍坊', + keyword: 'WEIFANG潍坊', + }, + { + cityCode: '340200', + cityName: '芜湖', + keyword: 'WUHU芜湖', + }, + ], + }, + { + letter: 'X', + data: [ + { + cityCode: '411500', + cityName: '信阳', + keyword: 'XINYANG信阳', + }, + { + cityCode: '152200', + cityName: '兴安盟', + keyword: 'XINGANMENG兴安盟', + }, + { + cityCode: '500200', + cityName: '县', + keyword: 'XIAN县', + }, + { + cityCode: '421200', + cityName: '咸宁', + keyword: 'XIANNING咸宁', + }, + { + cityCode: '610400', + cityName: '咸阳', + keyword: 'XIANYANG咸阳', + }, + { + cityCode: '420900', + cityName: '孝感', + keyword: 'XIAOGAN孝感', + }, + { + cityCode: '341800', + cityName: '宣城', + keyword: 'XUANCHENG宣城', + }, + { + cityCode: '320300', + cityName: '徐州', + keyword: 'XUZHOU徐州', + }, + { + cityCode: '140900', + cityName: '忻州', + keyword: 'XINZHOU忻州', + }, + { + cityCode: '410700', + cityName: '新乡', + keyword: 'XINXIANG新乡', + }, + { + cityCode: '360500', + cityName: '新余', + keyword: 'XINYU新余', + }, + { + cityCode: '711100', + cityName: '新北', + keyword: 'XINBEI新北', + }, + { + cityCode: '810300', + cityName: '新界', + keyword: 'XINJIE新界', + }, + { + cityCode: '710800', + cityName: '新竹', + keyword: 'XINZHU新竹', + }, + { + cityCode: '711300', + cityName: '新竹县', + keyword: 'XINZHUXIAN新竹县', + }, + { + cityCode: '430300', + cityName: '湘潭', + keyword: 'XIANGTAN湘潭', + }, + { + cityCode: '433100', + cityName: '湘西土家族苗族自治州', + keyword: 'XIANGXITUJIAZUMIAOZUZIZHIZHOU湘西土家族苗族自治州', + }, + { + cityCode: '420600', + cityName: '襄阳', + keyword: 'XIANGYANG襄阳', + }, + { + cityCode: '532800', + cityName: '西双版纳傣族自治州', + keyword: 'XISHUANGBANNADAIZUZIZHIZHOU西双版纳傣族自治州', + }, + { + cityCode: '630100', + cityName: '西宁', + keyword: 'XINING西宁', + }, + { + cityCode: '610100', + cityName: '西安', + keyword: 'XIAN西安', + }, + { + cityCode: '411000', + cityName: '许昌', + keyword: 'XUCHANG许昌', + }, + { + cityCode: '130500', + cityName: '邢台', + keyword: 'XINGTAI邢台', + }, + { + cityCode: '152500', + cityName: '锡林郭勒盟', + keyword: 'XILINGUOLEIMENG锡林郭勒盟', + }, + { + cityCode: '810100', + cityName: '香港岛', + keyword: 'XIANGGANGDAO香港岛', + }, + ], + }, + { + letter: 'Y', + data: [ + { + cityCode: '712100', + cityName: '云林县', + keyword: 'YUNLINXIAN云林县', + }, + { + cityCode: '445300', + cityName: '云浮', + keyword: 'YUNFU云浮', + }, + { + cityCode: '230700', + cityName: '伊春', + keyword: 'YICHUN伊春', + }, + { + cityCode: '654000', + cityName: '伊犁哈萨克自治州', + keyword: 'YILIHASAKEZIZHIZHOU伊犁哈萨克自治州', + }, + { + cityCode: '711200', + cityName: '宜兰县', + keyword: 'YILANXIAN宜兰县', + }, + { + cityCode: '511500', + cityName: '宜宾', + keyword: 'YIBIN宜宾', + }, + { + cityCode: '420500', + cityName: '宜昌', + keyword: 'YICHANG宜昌', + }, + { + cityCode: '360900', + cityName: '宜春', + keyword: 'YICHUN宜春', + }, + { + cityCode: '430600', + cityName: '岳阳', + keyword: 'YUEYANG岳阳', + }, + { + cityCode: '610600', + cityName: '延安', + keyword: 'YANAN延安', + }, + { + cityCode: '222400', + cityName: '延边朝鲜族自治州', + keyword: 'YANBIANCHAOXIANZUZIZHIZHOU延边朝鲜族自治州', + }, + { + cityCode: '321000', + cityName: '扬州', + keyword: 'YANGZHOU扬州', + }, + { + cityCode: '610800', + cityName: '榆林', + keyword: 'YULIN榆林', + }, + { + cityCode: '431100', + cityName: '永州', + keyword: 'YONGZHOU永州', + }, + { + cityCode: '370600', + cityName: '烟台', + keyword: 'YANTAI烟台', + }, + { + cityCode: '450900', + cityName: '玉林', + keyword: 'YULIN玉林', + }, + { + cityCode: '632700', + cityName: '玉树藏族自治州', + keyword: 'YUSHUCANGZUZIZHIZHOU玉树藏族自治州', + }, + { + cityCode: '530400', + cityName: '玉溪', + keyword: 'YUXI玉溪', + }, + { + cityCode: '430900', + cityName: '益阳', + keyword: 'YIYANG益阳', + }, + { + cityCode: '320900', + cityName: '盐城', + keyword: 'YANCHENG盐城', + }, + { + cityCode: '210800', + cityName: '营口', + keyword: 'YINGKOU营口', + }, + { + cityCode: '140800', + cityName: '运城', + keyword: 'YUNCHENG运城', + }, + { + cityCode: '640100', + cityName: '银川', + keyword: 'YINCHUAN银川', + }, + { + cityCode: '441700', + cityName: '阳江', + keyword: 'YANGJIANG阳江', + }, + { + cityCode: '140300', + cityName: '阳泉', + keyword: 'YANGQUAN阳泉', + }, + { + cityCode: '511800', + cityName: '雅安', + keyword: 'YAAN雅安', + }, + { + cityCode: '360600', + cityName: '鹰潭', + keyword: 'YINGTAN鹰潭', + }, + ], + }, + { + letter: 'Z', + data: [ + { + cityCode: '640500', + cityName: '中卫', + keyword: 'ZHONGWEI中卫', + }, + { + cityCode: '442000', + cityName: '中山', + keyword: 'ZHONGSHAN中山', + }, + { + cityCode: '411600', + cityName: '周口', + keyword: 'ZHOUKOU周口', + }, + { + cityCode: '130700', + cityName: '张家口', + keyword: 'ZHANGJIAKOU张家口', + }, + { + cityCode: '430800', + cityName: '张家界', + keyword: 'ZHANGJIAJIE张家界', + }, + { + cityCode: '620700', + cityName: '张掖', + keyword: 'ZHANGYE张掖', + }, + { + cityCode: '711700', + cityName: '彰化县', + keyword: 'ZHANGHUAXIAN彰化县', + }, + { + cityCode: '530600', + cityName: '昭通', + keyword: 'ZHAOTONG昭通', + }, + { + cityCode: '370400', + cityName: '枣庄', + keyword: 'ZAOZHUANG枣庄', + }, + { + cityCode: '430200', + cityName: '株洲', + keyword: 'ZHUZHOU株洲', + }, + { + cityCode: '370300', + cityName: '淄博', + keyword: 'ZIBO淄博', + }, + { + cityCode: '440800', + cityName: '湛江', + keyword: 'ZHANJIANG湛江', + }, + { + cityCode: '350600', + cityName: '漳州', + keyword: 'ZHANGZHOU漳州', + }, + { + cityCode: '440400', + cityName: '珠海', + keyword: 'ZHUHAI珠海', + }, + { + cityCode: '441200', + cityName: '肇庆', + keyword: 'ZHAOQING肇庆', + }, + { + cityCode: '659000', + cityName: '自治区直辖县级行政区划', + keyword: 'ZIZHIQUZHIXIAXIANJIXINGZHENGQUHUA自治区直辖县级行政区划', + }, + { + cityCode: '510300', + cityName: '自贡', + keyword: 'ZIGONG自贡', + }, + { + cityCode: '330900', + cityName: '舟山', + keyword: 'ZHOUSHAN舟山', + }, + { + cityCode: '512000', + cityName: '资阳', + keyword: 'ZIYANG资阳', + }, + { + cityCode: '520300', + cityName: '遵义', + keyword: 'ZUNYI遵义', + }, + { + cityCode: '410100', + cityName: '郑州', + keyword: 'ZHENGZHOU郑州', + }, + { + cityCode: '321100', + cityName: '镇江', + keyword: 'ZHENJIANG镇江', + }, + { + cityCode: '411700', + cityName: '驻马店', + keyword: 'ZHUMADIAN驻马店', + }, + ], + }, +]; diff --git a/src/constants/company.ts b/src/constants/company.ts new file mode 100644 index 0000000..59d29cf --- /dev/null +++ b/src/constants/company.ts @@ -0,0 +1,5 @@ +export enum CertificationStatusType { + None = '0', + Success = '1', + Fail = '2', +} diff --git a/src/constants/event.ts b/src/constants/event.ts new file mode 100644 index 0000000..46292bf --- /dev/null +++ b/src/constants/event.ts @@ -0,0 +1,36 @@ +export enum CollectEventName { + DEBUG = 'dev_debug_info', + CREATE_ORDER_VIEW = 'create_order_view', + UPLOAD_VIDEO_FAILED = 'upload_video_failed', + SAVE_VIDEO_LIST_FAILED = 'save_video_list_failed', + VIDEO_EXCEEDING_LIMITS = 'video_exceeding_limits', + MATERIAL_CARD_VIEW = 'material_card_view', + CREATE_MATERIAL_FAILED = 'create_material_failed', + UPDATE_MATERIAL_FAILED = 'update_material_failed', + UPDATE_ID_CARD_FAILED = 'update_id_card_failed', + CERTIFICATION_PAGE = 'certification_page', + SUBMIT_CERTIFICATION_FAILED = 'submit_certification_failed', + PUBLISH_JOB_FAILED = 'publish_job_failed', + PUBLISH_OPEN_JOB_FAILED = 'publish_open_job_failed', + UPDATE_JOB_FAILED = 'update_job_failed', + CLOSE_JOB_FAILED = 'close_job_failed', + VIEW_MATERIAL_FAILED = 'view_material_failed', + REQUEST_MATERIAL_SHARE_CODE_FAILED = 'request_material_share_code_failed', + SWITCH_APP_MODE_FAILED = 'SWITCH_APP_MODE_FAILED', + MESSAGE_DEV_LOG = 'MESSAGE_DEV_LOG', +} + +export enum ReportEventId { + VIEW_MATERIAL_GUIDE = 'view_material_guide', + CLICK_UPLOAD_VIDEO = 'click_upload_video', + CLICK_SAVE_VIDEOS = 'click_save_videos', + CLICK_PASTE_RESUME_TEXT = 'click_paste_resume_text', + CLICK_SAVE_RESUME_TEXT = 'click_save_resume_text', + CLICK_GO_TO_CREATE_MATERIAL = 'click_go_to_create_material', + CLICK_JOB_CONTACT = 'click_job_contact', + CLICK_START_CERTIFICATION = 'click_start_certification', + CLICK_UPLOAD_ID_CARD = 'click_upload_id_card', + CLICK_CERTIFICATION_SUBMIT = 'click_certification_submit', + CLICK_GO_TO_PUBLISH_JOB = 'click_go_to_publish_job', + CLICK_PAY_PUBLISH_JOB = 'click_pay_publish_job', +} diff --git a/src/constants/group.ts b/src/constants/group.ts new file mode 100644 index 0000000..88436be --- /dev/null +++ b/src/constants/group.ts @@ -0,0 +1,31 @@ +export enum GroupType { + // 所有可加入的群 + All = 'ALL', + // 我加入的 + Joined = 'JOINED', + // 我创建的 + Created = 'CREATED', + // 我关注的 + Followed = 'FOLLOWED', +} + +export enum GroupStatus { + All = 0, + Requested = 1, +} + +export const GROUP_PAGE_TABS = [ + { + type: GroupType.All, + title: '可进群', + }, + { + type: GroupType.Joined, + title: '我的群', + }, +]; + +export const GROUP_STATUS_OPTIONS = [ + { label: '全部', value: GroupStatus.All }, + { label: '已申请', value: GroupStatus.Requested }, +]; diff --git a/src/constants/job.ts b/src/constants/job.ts new file mode 100644 index 0000000..2f702fe --- /dev/null +++ b/src/constants/job.ts @@ -0,0 +1,176 @@ +export enum JobType { + All = 'ALL', + Finery = 'FINERY', // 服饰 + Makeups = 'MAKEUPS', // 美妆 + Digital = 'DIGITAL', //数码 + Foods = 'FOODS', // 食品酒饮 + Jewelry = 'JEWELRY', // 珠宝 + Appliance = 'APPLIANCE', // 家电 + Furniture = 'FURNITURE', // 日用家具 + PetFamily = 'PET_FAMILY', // 母婴宠物 + Luxury = 'LUXURY', // 奢品 + LocalLive = 'LOCAL_LIVE', // 本地生活 + Car = 'CAR', // 汽车 + Play = 'PLAY', // 娱乐 + Other = 'OTHER', // 娱乐 +} + +export enum EmployType { + All = 'ALL', + Full = 'FULL_TIME', + Part = 'PARTY_TIME', +} + +export enum SortType { + RECOMMEND = 'RECOMMEND', + DISTANCE = 'DISTANCE', + CREATE_TIME = 'CREATETIME', +} + +export enum UserJobType { + MyDeclared = 0, + MyBrowsed = 1, +} + +export enum JobManageType { + All = 'ALL', + Open = 'OPEN', + Pending = 'PENDING', + Error = 'FAIL', +} + +export enum JobManageStatus { + WaitVerify = 0, + Open = 1, + Error = 2, + Pending = 3, + Close = 4, + Expire = 5, +} + +export const ALL_JOB_TYPES = Object.values(JobType); + +export const ALL_SORT_TYPES = Object.values(SortType); + +export const ALL_EMPLOY_TYPES = Object.values(EmployType); + +export const SORT_TYPE_TITLE_MAP = { + [SortType.RECOMMEND]: '推荐', + [SortType.DISTANCE]: '附近', + [SortType.CREATE_TIME]: '最新', +}; + +export const EMPLOY_TYPE_TITLE_MAP = { + [EmployType.All]: '全部', + [EmployType.Part]: '兼职', + [EmployType.Full]: '全职', +}; + +export const JOB_TYPE_TITLE_MAP: { [key in JobType]: string } = { + [JobType.All]: '全部', + [JobType.Finery]: '服饰', + [JobType.Makeups]: '美妆', + [JobType.Digital]: '数码', + [JobType.Foods]: '食品酒饮', + [JobType.Jewelry]: '珠宝', + [JobType.Appliance]: '家电', + [JobType.Furniture]: '日用家具', + [JobType.PetFamily]: '母婴宠物', + [JobType.Luxury]: '奢品', + [JobType.LocalLive]: '本地生活', + [JobType.Car]: '汽车', + [JobType.Play]: '娱乐', + [JobType.Other]: '其他', +}; + +export const JOB_MANAGE_TYPE_TITLE_MAP = { + [JobManageType.All]: '全部', + [JobManageType.Open]: '开放中', + [JobManageType.Pending]: '待开放', + [JobManageType.Error]: '审核失败', +}; + +export const JOB_MANAGE_STATUS_TITLE_MAP = { + [JobManageStatus.WaitVerify]: '审核中', + [JobManageStatus.Open]: '开放中', + [JobManageStatus.Pending]: '待开放', + [JobManageStatus.Error]: '审核失败', + [JobManageStatus.Close]: '已关闭', + [JobManageStatus.Expire]: '已关闭', +}; + +export const JOB_PAGE_TABS = [ + { + type: EmployType.All, + title: EMPLOY_TYPE_TITLE_MAP[EmployType.All], + }, + { + type: EmployType.Part, + title: EMPLOY_TYPE_TITLE_MAP[EmployType.Part], + }, + { + type: EmployType.Full, + title: EMPLOY_TYPE_TITLE_MAP[EmployType.Full], + }, +]; + +export const JOB_TABS = ALL_JOB_TYPES.map(type => ({ + type, + title: JOB_TYPE_TITLE_MAP[type], +})); + +export const JOB_MANAGE_TABS = [ + { + type: JobManageType.All, + title: JOB_MANAGE_TYPE_TITLE_MAP[JobManageType.All], + }, + { + type: JobManageType.Open, + title: JOB_MANAGE_TYPE_TITLE_MAP[JobManageType.Open], + }, + { + type: JobManageType.Pending, + title: JOB_MANAGE_TYPE_TITLE_MAP[JobManageType.Pending], + }, + { + type: JobManageType.Error, + title: JOB_MANAGE_TYPE_TITLE_MAP[JobManageType.Error], + }, +]; + +export const JOB_TYPE_SELECT_OPTIONS = [ + { label: JOB_TYPE_TITLE_MAP[JobType.Finery], value: JobType.Finery }, + { label: JOB_TYPE_TITLE_MAP[JobType.Makeups], value: JobType.Makeups }, + { label: JOB_TYPE_TITLE_MAP[JobType.Digital], value: JobType.Digital }, + { label: JOB_TYPE_TITLE_MAP[JobType.Foods], value: JobType.Foods }, + { label: JOB_TYPE_TITLE_MAP[JobType.Jewelry], value: JobType.Jewelry }, + { label: JOB_TYPE_TITLE_MAP[JobType.Appliance], value: JobType.Appliance }, + { label: JOB_TYPE_TITLE_MAP[JobType.Furniture], value: JobType.Furniture }, + { label: JOB_TYPE_TITLE_MAP[JobType.PetFamily], value: JobType.PetFamily }, + { label: JOB_TYPE_TITLE_MAP[JobType.Luxury], value: JobType.Luxury }, + { label: JOB_TYPE_TITLE_MAP[JobType.LocalLive], value: JobType.LocalLive }, + { label: JOB_TYPE_TITLE_MAP[JobType.Car], value: JobType.Car }, + { label: JOB_TYPE_TITLE_MAP[JobType.Play], value: JobType.Play }, + { label: JOB_TYPE_TITLE_MAP[JobType.Other], value: JobType.Other }, +]; + +const MAX_SALARY = 10000000; +export const PART_EMPLOY_SALARY_OPTIONS = [ + { label: '不限' }, + { label: '100-200', value: { minSalary: 100, maxSalary: 200 } }, + { label: '200-300', value: { minSalary: 200, maxSalary: 300 } }, + { label: '300-500', value: { minSalary: 300, maxSalary: 500 } }, + { label: '500 以上', value: { minSalary: 500, maxSalary: MAX_SALARY } }, +]; + +export const FULL_EMPLOY_SALARY_OPTIONS = [ + { label: '不限' }, + { label: '5k-10k', value: { minSalary: 5000, maxSalary: 10000 } }, + { label: '10k-20k', value: { minSalary: 10000, maxSalary: 20000 } }, + { label: '20k-50k', value: { minSalary: 20000, maxSalary: 50000 } }, + { label: '50k 以上', value: { minSalary: 50000, maxSalary: MAX_SALARY } }, +]; + +export const PART_PRICE_OPTIONS = PART_EMPLOY_SALARY_OPTIONS.filter(o => !!o.value); + +export const FULL_PRICE_OPTIONS = FULL_EMPLOY_SALARY_OPTIONS.filter(o => !!o.value); diff --git a/src/constants/material.ts b/src/constants/material.ts new file mode 100644 index 0000000..bb6b5ae --- /dev/null +++ b/src/constants/material.ts @@ -0,0 +1,101 @@ +export enum ProfileGroupType { + Basic = 'basic', + Intention = 'intention', + Experience = 'experience', + Advantages = 'advantages', +} + +export const ProfileTitleMap = { + [ProfileGroupType.Basic]: '基本信息', + [ProfileGroupType.Intention]: '求职意向', + [ProfileGroupType.Experience]: '直播经验', + [ProfileGroupType.Advantages]: '自身优势', +}; + +export enum WorkedYears { + LessOneYear = 0.5, + OneYear = 1, + TwoYear = 2, + MoreThreeYear = 3, +} + +export enum GenderType { + All = -1, + MEN = 0, + WOMEN = 1, +} + +// 1主播主动创建 2主播填写表单创建 3 运营人工创建 4 机器人创建 +export enum ProfileCreateSource { + User = 1, + UserInput = 2, + Bl = 3, + Robot = 4, +} + +export enum StyleType { + Broadcasting = 1, + HoldOrder = 2, + Passion = 3, +} + +export enum MaterialStatus { + Open = 0, + Close = 1, +} + +export enum AnchorSortType { + Recommend = 'recommend', + Active = 'active', + New = 'new', +} + +export enum AnchorReadType { + All = 'all', + Read = 'read', + Unread = 'unread', +} + +export enum MaterialViewSource { + AnchorList = 'anchor-list', + Share = 'share', + Chat = 'chat', +} + +export const ALL_ANCHOR_SORT_TYPES = Object.values(AnchorSortType).filter(i => i !== AnchorSortType.Recommend); + +export const ANCHOR_SORT_TYPE_TITLE_MAP = { + [AnchorSortType.Recommend]: '推荐', + [AnchorSortType.New]: '最新', + [AnchorSortType.Active]: '活跃', +}; + +export const WORK_YEAR_LABELS = { + [WorkedYears.LessOneYear]: '1 年以下', + [WorkedYears.OneYear]: '1 年', + [WorkedYears.TwoYear]: '2 年', + [WorkedYears.MoreThreeYear]: '3 年以上', +}; + +export const WORK_YEAR_OPTIONS = [ + { label: WORK_YEAR_LABELS[WorkedYears.LessOneYear], value: WorkedYears.LessOneYear }, + { label: WORK_YEAR_LABELS[WorkedYears.OneYear], value: WorkedYears.OneYear }, + { label: WORK_YEAR_LABELS[WorkedYears.TwoYear], value: WorkedYears.TwoYear }, + { label: WORK_YEAR_LABELS[WorkedYears.MoreThreeYear], value: WorkedYears.MoreThreeYear }, +]; + +export const ALL_GENDER_TYPES = [GenderType.All, GenderType.MEN, GenderType.WOMEN]; + +export const GENDER_TYPE_TITLE_MAP = { + [GenderType.All]: '不限', + [GenderType.WOMEN]: '女', + [GenderType.MEN]: '男', +}; + +export const ALL_ANCHOR_READ_TYPES = Object.values(AnchorReadType); + +export const ANCHOR_READ_TITLE_MAP = { + [AnchorReadType.All]: '全部', + [AnchorReadType.Read]: '已读', + [AnchorReadType.Unread]: '未读', +}; diff --git a/src/constants/message.ts b/src/constants/message.ts new file mode 100644 index 0000000..bc0926a --- /dev/null +++ b/src/constants/message.ts @@ -0,0 +1,28 @@ +export enum MessageType { + Text = '1', + File = '2', + Image = '3', + TextAndFile = '4', + RequestAnchorContact = '5', + RequestCompanyContact = '6', + Material = '7', + Job = '8', + Location = '9', + Time = '10', +} + +export enum MessageActionStatus { + Send = 0, + Agree = 1, + Reject = 2, + AgreeByDefault = 3, +} + +export enum ChatWatchType { + AnchorReject = 1, + CompanyReject = 2, +} + +export const REFRESH_UNREAD_COUNT_TIME = 20 * 1000; +export const REFRESH_CHAT_LIST_TIME = 20 * 1000; +export const PULL_NEW_MESSAGES_TIME = 3 * 1000; diff --git a/src/constants/product.ts b/src/constants/product.ts new file mode 100644 index 0000000..a86066a --- /dev/null +++ b/src/constants/product.ts @@ -0,0 +1,65 @@ +export enum ProductType { + GetJob = 'GETJOB', + AddGroup = 'ADDGROUP', + BossVip = 'BOSSVIP', + VIP = 'VIP', // 主播通告 VIP + GroupBatchPublish = 'GROUP_BATCH_PUSH', // 主播通告 VIP + CompanyPublishJob = 'BOSS_PUB_JOB', // 企业购买单次发布通告 + BOSS_VIP_NEW = 'BOSS_VIP_NEW', +} + +export const PRODUCT_ID_MAP = { + [ProductType.GetJob]: 1, + [ProductType.AddGroup]: 2, +}; + +export enum DeclarationType { + // 直接连接通告主 + Direct = 0, + // 客服联系 customer service + CS = 1, + // 进群报单 + Group = 2, +} + +export enum ProductSpecId { + AddGroup1 = 'ADDGROUP_1', + AddGroup2 = 'ADDGROUP_2', + AddGroup3 = 'ADDGROUP_3', + BossVip = 'BOSSVIP', + WeeklyVIP = 'VIP_W', + MonthlyVIP = 'VIP_M', // 30 每天十次 + NewMonthlyVIP = 'VIP_M_NEW', // 18 每天五次 + GroupBatchPublish20 = 'GROUP_BATCH_PUSH_20', + GroupBatchPublish50 = 'GROUP_BATCH_PUSH_50', + GroupBatchPublish100 = 'GROUP_BATCH_PUSH_100', + GroupBatchPublish300 = 'GROUP_BATCH_PUSH_300', + GroupBatchPublish500 = 'GROUP_BATCH_PUSH_500', + GroupBatchPublish1000 = 'GROUP_BATCH_PUSH_1000', + BOSS_PUB_JOB_1 = 'BOSS_PUB_JOB_1', // 旧版企业发通告会员 + BOSS_VIP_NEW_1 = 'BOSS_VIP_NEW_1', // 新版企业发通告会员 - 周 + BOSS_VIP_NEW_2 = 'BOSS_VIP_NEW_2', // 新版企业发通告会员 - 月 + BOSS_VIP_NEW_3 = 'BOSS_VIP_NEW_3', // 新版企业发通告会员 - 季 +} + +export enum OrderType { + Group = 1, + BossVip = 2, + VIP = 4, // 主播会员 + GroupBatchPublish = 5, + CompanyPublishJob = 6, + CompanyVip = 7, +} + +export enum OrderStatus { + Waiting = 0, + Success = 1, + Refund = 2, + Cancel = 3, +} + +export enum QrCodeType { + Group = 'group', + ConnectCustomerService = 'connect_customer_service', + PublishJob = 'publish_job', +} diff --git a/src/constants/subscribe.ts b/src/constants/subscribe.ts new file mode 100644 index 0000000..78cb37c --- /dev/null +++ b/src/constants/subscribe.ts @@ -0,0 +1,13 @@ +export enum SubscribeTempId { + INTERVIEW_INVITATION = 'obPJO1nmXoSwAovbuuUz4aVfb6Ir8AOp1kY_JlQ18dY', + UNREAD_MESSAGE_REMINDER = 'm-Zx9zgf5KGnlHgxbxSkEtpd7XXCg1r1adC2UZS7sXs', + NEW_MESSAGE_REMINDER = '4lkxb_mDLbJ889PZqunxP5U8auvQHS6hZgzfxgGHo9U', + SUBSCRIBE_JOB = 'PYekheJ60PA53SB51wFjySYjMUQjS17elPNnLwoIEQM', + SUBSCRIBE_VIP = 'TxQSUxuB9av1bkWudq-UcM1ey9ChVYqTSC9qBPpW0e8', +} + +export const MessageSubscribeIds = [ + SubscribeTempId.INTERVIEW_INVITATION, + SubscribeTempId.UNREAD_MESSAGE_REMINDER, + SubscribeTempId.NEW_MESSAGE_REMINDER, +]; diff --git a/src/fragments/group/index.less b/src/fragments/group/index.less new file mode 100644 index 0000000..2ca3a65 --- /dev/null +++ b/src/fragments/group/index.less @@ -0,0 +1,67 @@ +@import '@/styles/variables.less'; + +.group-fragment { + &__container { + padding: 0 20px; + margin-top: 20px; + } + + &__search-wrapper { + display: flex; + flex-direction: row; + align-items: center; + margin-bottom: 24px; + } + + &__search { + flex: 1 0; + } + + &__status-select { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + + font-size: 28px; + line-height: 32px; + color: @blColor; + + margin-left: 20px; + + .title { + margin-right: 5px; + } + } + + &__tips-container { + width: 100%; + height: 100vh; + padding-top: 282px; + box-sizing: border-box; + display: flex; + flex-direction: column; + align-items: center; + } + + &__empty-box { + width: 386px; + height: 278px; + } + + &__tips-title { + font-size: 28px; + font-weight: 400; + line-height: 40px; + color: @blColor; + margin-top: 50px; + } + + &__overlay-outer { + top: 94px; + } + + &__overlay-inner { + width: 100%; + } +} \ No newline at end of file diff --git a/src/fragments/group/index.tsx b/src/fragments/group/index.tsx new file mode 100644 index 0000000..8d21e14 --- /dev/null +++ b/src/fragments/group/index.tsx @@ -0,0 +1,162 @@ +import { Image } from '@tarojs/components'; +import { NodesRef, useDidShow } from '@tarojs/taro'; + +import { ArrowUp, ArrowDown } from '@taroify/icons'; +import classNames from 'classnames'; +import { useCallback, useState } from 'react'; + +import GroupList, { IGroupListProps } from '@/components/group-list'; +import Overlay from '@/components/overlay'; +import ProductGroupDialog from '@/components/product-dialog/group'; +import SearchInput from '@/components/search'; +import Select from '@/components/select'; +import { APP_TAB_BAR_ID } from '@/constants/app'; +import { GROUP_STATUS_OPTIONS, GroupStatus, GroupType } from '@/constants/group'; +import useListHeight, { IUseListHeightProps } from '@/hooks/use-list-height'; +import { GroupInfo } from '@/types/group'; +import { logWithPrefix } from '@/utils/common'; + +import './index.less'; + +interface IProps { + type: GroupType; +} + +const PREFIX = 'group-fragment'; +const LIST_CONTAINER_CLASS = `${PREFIX}__list-container`; +const CALC_LIST_PROPS: IUseListHeightProps = { + selectors: [`.${LIST_CONTAINER_CLASS}`, `#${APP_TAB_BAR_ID}`], + calc: (rects: [NodesRef.BoundingClientRectCallbackResult, NodesRef.BoundingClientRectCallbackResult]) => { + const [rect, diffRect] = rects; + return diffRect.top - rect.top; + }, +}; + +const log = logWithPrefix(PREFIX); + +const NoGroupTips = (props: { className?: string; height?: number }) => { + const { className, height } = props; + return ( +
+ +
您还没有播络邀请的群
+
+ ); +}; + +function ListWrapper(props: IGroupListProps) { + const { className, listHeight, type } = props; + const [isEmpty, setIsEmpty] = useState(false); + + const handleListEmpty = useCallback(() => { + if (type !== GroupType.Joined) { + return; + } + setIsEmpty(true); + }, [type]); + + useDidShow(() => { + if (!isEmpty) { + return; + } + setIsEmpty(false); + }); + + if (isEmpty) { + return ; + } + + return ; +} + +function GroupFragment(props: IProps) { + const { type } = props; + const listHeight = useListHeight(CALC_LIST_PROPS); + const [value, setValue] = useState(''); + const [keyWord, setKeyWord] = useState(''); + const [status, setStatus] = useState(GroupStatus.All); + const [showStatusSelect, setShowStatusSelect] = useState(false); + const [groupInfo, setGroupInfo] = useState(null); + + const handleClickSearch = useCallback(() => { + log('handleClickSearch', value); + if (value === keyWord) { + return; + } + setKeyWord(value); + }, [value, keyWord]); + + const handleSearchClear = useCallback(() => { + setValue(''); + setKeyWord(''); + }, []); + + const handleSearchChange = useCallback(e => setValue(e.detail.value), []); + + const handleClickStatusSelect = useCallback(() => { + setShowStatusSelect(!showStatusSelect); + }, [showStatusSelect]); + + const handleHideStatusSelect = useCallback(() => setShowStatusSelect(false), []); + + const handleSelectStatus = useCallback((newStatus: GroupStatus) => { + log('handleSelectStatus', newStatus); + setStatus(newStatus); + setShowStatusSelect(false); + }, []); + + const handleClickInvite = useCallback((info: GroupInfo) => { + log('handleClickInvite', info); + setGroupInfo(info); + }, []); + + return ( +
+
+ + {type === GroupType.All && ( +
+
申请状态
+ {showStatusSelect ? : } +
+ )} +
+
+ +
+
+ {groupInfo && ( + setGroupInfo(null)} + /> + )} +
+ +