├── .editorconfig ├── .env ├── .eslintignore ├── .eslintrc ├── .gitignore ├── .huskyrc ├── .lintstagedrc ├── .prettierrc ├── README.md ├── demo.download.png ├── demo.home.png ├── demo.loading.png ├── demo.result.png ├── demo.share.qr.png ├── index.html ├── package.json ├── pnpm-lock.yaml ├── public ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── apple-launch-image.png ├── apple-touch-icon.png ├── browserconfig.xml ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── mstile-150x150.png ├── safari-pinned-tab.svg ├── site.webmanifest └── splash │ ├── ipad_splash.png │ ├── ipadpro1_splash.png │ ├── ipadpro2_splash.png │ ├── ipadpro3_splash.png │ ├── iphone5_splash.png │ ├── iphone6_splash.png │ ├── iphoneplus_splash.png │ ├── iphonex_splash.png │ ├── iphonexr_splash.png │ └── iphonexsmax_splash.png ├── src ├── App.jsx ├── Global.style.js ├── assets │ ├── img │ │ ├── bg.love.jpg │ │ ├── birds.bg.png │ │ ├── heart.svg │ │ ├── logo.png │ │ ├── lover.bg.png │ │ ├── noise.bg.png │ │ └── reward.jpg │ └── words.json ├── components │ ├── Card.jsx │ ├── Header.jsx │ ├── InfoModal.jsx │ ├── Loading.jsx │ ├── LoadingWords.jsx │ ├── RefreshButton.jsx │ ├── SaveButton.jsx │ ├── ShareQR.jsx │ ├── StartButton.jsx │ ├── StyledButton.jsx │ ├── StyledWordBox.jsx │ └── animates.js ├── main.jsx └── utils.js └── vite.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*.md] 7 | trim_trailing_whitespace = false 8 | 9 | [*.js] 10 | trim_trailing_whitespace = true 11 | 12 | # Unix-style newlines with a newline ending every file 13 | [*] 14 | indent_style = space 15 | indent_size = 2 16 | end_of_line = lf 17 | charset = utf-8 18 | insert_final_newline = true 19 | max_line_length = 100 -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | VITE_TOKEN=XXXXXXXX -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /scripts 2 | /node_modules 3 | /build 4 | /.vscode 5 | /public -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["eslint:recommended", "plugin:react/recommended", "prettier"], 3 | "plugins": ["react-hooks"], 4 | "rules": { 5 | "semi": 2, 6 | "no-console": "off", 7 | "react/prop-types": 0, 8 | "no-unused-vars": ["error", { "ignoreRestSiblings": true }], 9 | "react-hooks/rules-of-hooks": "error", 10 | "react-hooks/exhaustive-deps": "warn", 11 | "max-lines": ["warn", { "max": 500 }], 12 | "react/display-name": 0, 13 | "react/react-in-jsx-scope": "off" 14 | }, 15 | "parser": "babel-eslint", 16 | "parserOptions": { 17 | "ecmaVersion": 2018, 18 | "sourceType": "module", 19 | "ecmaFeatures": { 20 | "jsx": true 21 | } 22 | }, 23 | "globals": { 24 | "UE": true 25 | }, 26 | "env": { 27 | "browser": true, 28 | "node": true, 29 | "es6": true, 30 | "serviceworker": true 31 | }, 32 | "settings": { 33 | "react": { 34 | "version": "16.8" 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | */node_modules 4 | 5 | # testing 6 | /coverage 7 | 8 | # production 9 | /build 10 | /dist 11 | 12 | # misc 13 | .DS_Store 14 | .env.local 15 | .env.development.local 16 | .env.test.local 17 | .env.production.local 18 | 19 | package-lock.json 20 | npm-debug.log* 21 | yarn-debug.log* 22 | yarn-error.log* 23 | 24 | .idea 25 | -------------------------------------------------------------------------------- /.huskyrc: -------------------------------------------------------------------------------- 1 | { 2 | "hooks": { 3 | "commit-msg": "commitlint -E HUSKY_GIT_PARAMS", 4 | "pre-commit": "lint-staged" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.lintstagedrc: -------------------------------------------------------------------------------- 1 | { 2 | "src/**/*.{js,jsx}": ["eslint --fix"] 3 | } 4 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 100, 3 | "singleQuote": true, 4 | "bracketSpacing": true, 5 | "jsxBracketSameLine": false, 6 | "tabWidth": 2, 7 | "semi": true, 8 | "trailingComma": "none" 9 | } 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | logo 3 |

甜(Tu)言(Wei)蜜(Qing)语(Hua)

4 |
5 | 6 | 土味情话,在线生成:[https://works.yangerxiao.com/honeyed-words-generator/](https://works.yangerxiao.com/honeyed-words-generator/) 7 | 8 | ## 应用截图 9 | 10 | ### 首页 11 | 12 | ![demo home](demo.home.png) 13 | 14 | ### 加载页 15 | 16 | ![demo load random words](demo.loading.png) 17 | 18 | ### 结果页 19 | 20 | ![demo words result](demo.result.png) 21 | 22 | ### 生成并下载的图片 23 | 24 | ![demo download](demo.download.png) 25 | 26 | ### 生成适合分享出去的二维码 27 | 28 | ![demo qr image](demo.share.qr.png) 29 | 30 | ## 贡献土味情话 31 | 32 | 所有情话均存储在`src/assets/words.json`文件内,请 clone 代码然后提 PR。 33 | 34 | P.S. `|`代表换行 35 | 36 | ## 本地开发 37 | 38 | `git clone https://github.com/zerosoul/honeyed-words-generator.git` 39 | 40 | `cd honeyed-words-generator && yarn install` 41 | 42 | `yarn start` 43 | 44 | Let's rock it~ 45 | 46 | ## 支持 47 | 48 | ![赞赏码](src/assets/img/reward.jpg) 49 | -------------------------------------------------------------------------------- /demo.download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/demo.download.png -------------------------------------------------------------------------------- /demo.home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/demo.home.png -------------------------------------------------------------------------------- /demo.loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/demo.loading.png -------------------------------------------------------------------------------- /demo.result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/demo.result.png -------------------------------------------------------------------------------- /demo.share.qr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/demo.share.qr.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 23 | 26 | 29 | 32 | 35 | 38 | 41 | 44 | 47 | 50 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 69 | 70 | 土味情话 在线生成 - honeyed words generator 71 | 72 | 74 | 75 | 76 | 77 | 78 |
79 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "honeyed-words-generator", 3 | "version": "2.0.0", 4 | "description": "土味情话,在线生成", 5 | "main": "main.jsx", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/zerosoul/honeyed-words-generator.git" 9 | }, 10 | "keywords": [ 11 | "css3", 12 | "valentine", 13 | "react", 14 | "frontend", 15 | "tool", 16 | "love" 17 | ], 18 | "author": "tristan", 19 | "license": "ISC", 20 | "bugs": { 21 | "url": "https://github.com/zerosoul/honeyed-words-generator/issues" 22 | }, 23 | "homepage": "https://honey.yangerxiao.com", 24 | "dependencies": { 25 | "file-saver": "^2.0.5", 26 | "html2canvas": "^1.4.1", 27 | "qrcode.react": "^4.2.0", 28 | "react": "^19.0.0", 29 | "react-dom": "^19.0.0", 30 | "react-github-btn": "^1.4.0", 31 | "react-icons": "^5.4.0", 32 | "styled-components": "^6.1.13", 33 | "styled-reset": "^4.5.2" 34 | }, 35 | "devDependencies": { 36 | "@vitejs/plugin-react": "^4.3.4", 37 | "eslint": "^8.26.0", 38 | "eslint-config-prettier": "^8.5.0", 39 | "eslint-plugin-react": "^7.31.10", 40 | "eslint-plugin-react-hooks": "^4.6.0", 41 | "husky": "^8.0.1", 42 | "lint-staged": "^13.0.3", 43 | "prettier": "^2.7.1", 44 | "vite": "^6.0.3" 45 | }, 46 | "engines": { 47 | "node": ">=18.0.0", 48 | "npm": ">=7.0.0" 49 | }, 50 | "scripts": { 51 | "dev": "vite", 52 | "build": "vite build", 53 | "serve": "vite preview", 54 | "prepare": "husky install" 55 | }, 56 | "browserslist": { 57 | "production": [ 58 | ">0.2%", 59 | "not dead", 60 | "not op_mini all" 61 | ], 62 | "development": [ 63 | "last 1 chrome version", 64 | "last 1 firefox version", 65 | "last 1 safari version" 66 | ] 67 | } 68 | } -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | file-saver: 12 | specifier: ^2.0.5 13 | version: 2.0.5 14 | html2canvas: 15 | specifier: ^1.4.1 16 | version: 1.4.1 17 | qrcode.react: 18 | specifier: ^4.2.0 19 | version: 4.2.0(react@19.0.0) 20 | react: 21 | specifier: ^19.0.0 22 | version: 19.0.0 23 | react-dom: 24 | specifier: ^19.0.0 25 | version: 19.0.0(react@19.0.0) 26 | react-github-btn: 27 | specifier: ^1.4.0 28 | version: 1.4.0(react@19.0.0) 29 | react-icons: 30 | specifier: ^5.4.0 31 | version: 5.4.0(react@19.0.0) 32 | styled-components: 33 | specifier: ^6.1.13 34 | version: 6.1.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 35 | styled-reset: 36 | specifier: ^4.5.2 37 | version: 4.5.2(styled-components@6.1.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) 38 | devDependencies: 39 | '@vitejs/plugin-react': 40 | specifier: ^4.3.4 41 | version: 4.3.4(vite@6.0.3) 42 | eslint: 43 | specifier: ^8.26.0 44 | version: 8.57.1 45 | eslint-config-prettier: 46 | specifier: ^8.5.0 47 | version: 8.10.0(eslint@8.57.1) 48 | eslint-plugin-react: 49 | specifier: ^7.31.10 50 | version: 7.37.2(eslint@8.57.1) 51 | eslint-plugin-react-hooks: 52 | specifier: ^4.6.0 53 | version: 4.6.2(eslint@8.57.1) 54 | husky: 55 | specifier: ^8.0.1 56 | version: 8.0.3 57 | lint-staged: 58 | specifier: ^13.0.3 59 | version: 13.3.0 60 | prettier: 61 | specifier: ^2.7.1 62 | version: 2.8.8 63 | vite: 64 | specifier: ^6.0.3 65 | version: 6.0.3 66 | 67 | packages: 68 | 69 | '@ampproject/remapping@2.3.0': 70 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 71 | engines: {node: '>=6.0.0'} 72 | 73 | '@babel/code-frame@7.26.2': 74 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 75 | engines: {node: '>=6.9.0'} 76 | 77 | '@babel/compat-data@7.26.3': 78 | resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} 79 | engines: {node: '>=6.9.0'} 80 | 81 | '@babel/core@7.26.0': 82 | resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} 83 | engines: {node: '>=6.9.0'} 84 | 85 | '@babel/generator@7.26.3': 86 | resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} 87 | engines: {node: '>=6.9.0'} 88 | 89 | '@babel/helper-compilation-targets@7.25.9': 90 | resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} 91 | engines: {node: '>=6.9.0'} 92 | 93 | '@babel/helper-module-imports@7.25.9': 94 | resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} 95 | engines: {node: '>=6.9.0'} 96 | 97 | '@babel/helper-module-transforms@7.26.0': 98 | resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} 99 | engines: {node: '>=6.9.0'} 100 | peerDependencies: 101 | '@babel/core': ^7.0.0 102 | 103 | '@babel/helper-plugin-utils@7.25.9': 104 | resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} 105 | engines: {node: '>=6.9.0'} 106 | 107 | '@babel/helper-string-parser@7.25.9': 108 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 109 | engines: {node: '>=6.9.0'} 110 | 111 | '@babel/helper-validator-identifier@7.25.9': 112 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 113 | engines: {node: '>=6.9.0'} 114 | 115 | '@babel/helper-validator-option@7.25.9': 116 | resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} 117 | engines: {node: '>=6.9.0'} 118 | 119 | '@babel/helpers@7.26.0': 120 | resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} 121 | engines: {node: '>=6.9.0'} 122 | 123 | '@babel/parser@7.26.3': 124 | resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} 125 | engines: {node: '>=6.0.0'} 126 | hasBin: true 127 | 128 | '@babel/plugin-transform-react-jsx-self@7.25.9': 129 | resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} 130 | engines: {node: '>=6.9.0'} 131 | peerDependencies: 132 | '@babel/core': ^7.0.0-0 133 | 134 | '@babel/plugin-transform-react-jsx-source@7.25.9': 135 | resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} 136 | engines: {node: '>=6.9.0'} 137 | peerDependencies: 138 | '@babel/core': ^7.0.0-0 139 | 140 | '@babel/template@7.25.9': 141 | resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} 142 | engines: {node: '>=6.9.0'} 143 | 144 | '@babel/traverse@7.26.4': 145 | resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} 146 | engines: {node: '>=6.9.0'} 147 | 148 | '@babel/types@7.26.3': 149 | resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} 150 | engines: {node: '>=6.9.0'} 151 | 152 | '@emotion/is-prop-valid@1.2.2': 153 | resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} 154 | 155 | '@emotion/memoize@0.8.1': 156 | resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} 157 | 158 | '@emotion/unitless@0.8.1': 159 | resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} 160 | 161 | '@esbuild/aix-ppc64@0.24.0': 162 | resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} 163 | engines: {node: '>=18'} 164 | cpu: [ppc64] 165 | os: [aix] 166 | 167 | '@esbuild/android-arm64@0.24.0': 168 | resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} 169 | engines: {node: '>=18'} 170 | cpu: [arm64] 171 | os: [android] 172 | 173 | '@esbuild/android-arm@0.24.0': 174 | resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} 175 | engines: {node: '>=18'} 176 | cpu: [arm] 177 | os: [android] 178 | 179 | '@esbuild/android-x64@0.24.0': 180 | resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} 181 | engines: {node: '>=18'} 182 | cpu: [x64] 183 | os: [android] 184 | 185 | '@esbuild/darwin-arm64@0.24.0': 186 | resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} 187 | engines: {node: '>=18'} 188 | cpu: [arm64] 189 | os: [darwin] 190 | 191 | '@esbuild/darwin-x64@0.24.0': 192 | resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} 193 | engines: {node: '>=18'} 194 | cpu: [x64] 195 | os: [darwin] 196 | 197 | '@esbuild/freebsd-arm64@0.24.0': 198 | resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} 199 | engines: {node: '>=18'} 200 | cpu: [arm64] 201 | os: [freebsd] 202 | 203 | '@esbuild/freebsd-x64@0.24.0': 204 | resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} 205 | engines: {node: '>=18'} 206 | cpu: [x64] 207 | os: [freebsd] 208 | 209 | '@esbuild/linux-arm64@0.24.0': 210 | resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} 211 | engines: {node: '>=18'} 212 | cpu: [arm64] 213 | os: [linux] 214 | 215 | '@esbuild/linux-arm@0.24.0': 216 | resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} 217 | engines: {node: '>=18'} 218 | cpu: [arm] 219 | os: [linux] 220 | 221 | '@esbuild/linux-ia32@0.24.0': 222 | resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} 223 | engines: {node: '>=18'} 224 | cpu: [ia32] 225 | os: [linux] 226 | 227 | '@esbuild/linux-loong64@0.24.0': 228 | resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} 229 | engines: {node: '>=18'} 230 | cpu: [loong64] 231 | os: [linux] 232 | 233 | '@esbuild/linux-mips64el@0.24.0': 234 | resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} 235 | engines: {node: '>=18'} 236 | cpu: [mips64el] 237 | os: [linux] 238 | 239 | '@esbuild/linux-ppc64@0.24.0': 240 | resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} 241 | engines: {node: '>=18'} 242 | cpu: [ppc64] 243 | os: [linux] 244 | 245 | '@esbuild/linux-riscv64@0.24.0': 246 | resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} 247 | engines: {node: '>=18'} 248 | cpu: [riscv64] 249 | os: [linux] 250 | 251 | '@esbuild/linux-s390x@0.24.0': 252 | resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} 253 | engines: {node: '>=18'} 254 | cpu: [s390x] 255 | os: [linux] 256 | 257 | '@esbuild/linux-x64@0.24.0': 258 | resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} 259 | engines: {node: '>=18'} 260 | cpu: [x64] 261 | os: [linux] 262 | 263 | '@esbuild/netbsd-x64@0.24.0': 264 | resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} 265 | engines: {node: '>=18'} 266 | cpu: [x64] 267 | os: [netbsd] 268 | 269 | '@esbuild/openbsd-arm64@0.24.0': 270 | resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} 271 | engines: {node: '>=18'} 272 | cpu: [arm64] 273 | os: [openbsd] 274 | 275 | '@esbuild/openbsd-x64@0.24.0': 276 | resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} 277 | engines: {node: '>=18'} 278 | cpu: [x64] 279 | os: [openbsd] 280 | 281 | '@esbuild/sunos-x64@0.24.0': 282 | resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} 283 | engines: {node: '>=18'} 284 | cpu: [x64] 285 | os: [sunos] 286 | 287 | '@esbuild/win32-arm64@0.24.0': 288 | resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} 289 | engines: {node: '>=18'} 290 | cpu: [arm64] 291 | os: [win32] 292 | 293 | '@esbuild/win32-ia32@0.24.0': 294 | resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} 295 | engines: {node: '>=18'} 296 | cpu: [ia32] 297 | os: [win32] 298 | 299 | '@esbuild/win32-x64@0.24.0': 300 | resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} 301 | engines: {node: '>=18'} 302 | cpu: [x64] 303 | os: [win32] 304 | 305 | '@eslint-community/eslint-utils@4.4.1': 306 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 307 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 308 | peerDependencies: 309 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 310 | 311 | '@eslint-community/regexpp@4.12.1': 312 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 313 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 314 | 315 | '@eslint/eslintrc@2.1.4': 316 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 317 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 318 | 319 | '@eslint/js@8.57.1': 320 | resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} 321 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 322 | 323 | '@humanwhocodes/config-array@0.13.0': 324 | resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} 325 | engines: {node: '>=10.10.0'} 326 | deprecated: Use @eslint/config-array instead 327 | 328 | '@humanwhocodes/module-importer@1.0.1': 329 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 330 | engines: {node: '>=12.22'} 331 | 332 | '@humanwhocodes/object-schema@2.0.3': 333 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} 334 | deprecated: Use @eslint/object-schema instead 335 | 336 | '@jridgewell/gen-mapping@0.3.8': 337 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 338 | engines: {node: '>=6.0.0'} 339 | 340 | '@jridgewell/resolve-uri@3.1.2': 341 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 342 | engines: {node: '>=6.0.0'} 343 | 344 | '@jridgewell/set-array@1.2.1': 345 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 346 | engines: {node: '>=6.0.0'} 347 | 348 | '@jridgewell/sourcemap-codec@1.5.0': 349 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 350 | 351 | '@jridgewell/trace-mapping@0.3.25': 352 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 353 | 354 | '@nodelib/fs.scandir@2.1.5': 355 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 356 | engines: {node: '>= 8'} 357 | 358 | '@nodelib/fs.stat@2.0.5': 359 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 360 | engines: {node: '>= 8'} 361 | 362 | '@nodelib/fs.walk@1.2.8': 363 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 364 | engines: {node: '>= 8'} 365 | 366 | '@rollup/rollup-android-arm-eabi@4.28.1': 367 | resolution: {integrity: sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==} 368 | cpu: [arm] 369 | os: [android] 370 | 371 | '@rollup/rollup-android-arm64@4.28.1': 372 | resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==} 373 | cpu: [arm64] 374 | os: [android] 375 | 376 | '@rollup/rollup-darwin-arm64@4.28.1': 377 | resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==} 378 | cpu: [arm64] 379 | os: [darwin] 380 | 381 | '@rollup/rollup-darwin-x64@4.28.1': 382 | resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==} 383 | cpu: [x64] 384 | os: [darwin] 385 | 386 | '@rollup/rollup-freebsd-arm64@4.28.1': 387 | resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==} 388 | cpu: [arm64] 389 | os: [freebsd] 390 | 391 | '@rollup/rollup-freebsd-x64@4.28.1': 392 | resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==} 393 | cpu: [x64] 394 | os: [freebsd] 395 | 396 | '@rollup/rollup-linux-arm-gnueabihf@4.28.1': 397 | resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==} 398 | cpu: [arm] 399 | os: [linux] 400 | 401 | '@rollup/rollup-linux-arm-musleabihf@4.28.1': 402 | resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==} 403 | cpu: [arm] 404 | os: [linux] 405 | 406 | '@rollup/rollup-linux-arm64-gnu@4.28.1': 407 | resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==} 408 | cpu: [arm64] 409 | os: [linux] 410 | 411 | '@rollup/rollup-linux-arm64-musl@4.28.1': 412 | resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==} 413 | cpu: [arm64] 414 | os: [linux] 415 | 416 | '@rollup/rollup-linux-loongarch64-gnu@4.28.1': 417 | resolution: {integrity: sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==} 418 | cpu: [loong64] 419 | os: [linux] 420 | 421 | '@rollup/rollup-linux-powerpc64le-gnu@4.28.1': 422 | resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==} 423 | cpu: [ppc64] 424 | os: [linux] 425 | 426 | '@rollup/rollup-linux-riscv64-gnu@4.28.1': 427 | resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==} 428 | cpu: [riscv64] 429 | os: [linux] 430 | 431 | '@rollup/rollup-linux-s390x-gnu@4.28.1': 432 | resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==} 433 | cpu: [s390x] 434 | os: [linux] 435 | 436 | '@rollup/rollup-linux-x64-gnu@4.28.1': 437 | resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==} 438 | cpu: [x64] 439 | os: [linux] 440 | 441 | '@rollup/rollup-linux-x64-musl@4.28.1': 442 | resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==} 443 | cpu: [x64] 444 | os: [linux] 445 | 446 | '@rollup/rollup-win32-arm64-msvc@4.28.1': 447 | resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==} 448 | cpu: [arm64] 449 | os: [win32] 450 | 451 | '@rollup/rollup-win32-ia32-msvc@4.28.1': 452 | resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==} 453 | cpu: [ia32] 454 | os: [win32] 455 | 456 | '@rollup/rollup-win32-x64-msvc@4.28.1': 457 | resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==} 458 | cpu: [x64] 459 | os: [win32] 460 | 461 | '@types/babel__core@7.20.5': 462 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 463 | 464 | '@types/babel__generator@7.6.8': 465 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} 466 | 467 | '@types/babel__template@7.4.4': 468 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 469 | 470 | '@types/babel__traverse@7.20.6': 471 | resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} 472 | 473 | '@types/estree@1.0.6': 474 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 475 | 476 | '@types/stylis@4.2.5': 477 | resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} 478 | 479 | '@ungap/structured-clone@1.2.1': 480 | resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} 481 | 482 | '@vitejs/plugin-react@4.3.4': 483 | resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} 484 | engines: {node: ^14.18.0 || >=16.0.0} 485 | peerDependencies: 486 | vite: ^4.2.0 || ^5.0.0 || ^6.0.0 487 | 488 | acorn-jsx@5.3.2: 489 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 490 | peerDependencies: 491 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 492 | 493 | acorn@8.14.0: 494 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 495 | engines: {node: '>=0.4.0'} 496 | hasBin: true 497 | 498 | ajv@6.12.6: 499 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 500 | 501 | ansi-escapes@5.0.0: 502 | resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} 503 | engines: {node: '>=12'} 504 | 505 | ansi-regex@5.0.1: 506 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 507 | engines: {node: '>=8'} 508 | 509 | ansi-regex@6.1.0: 510 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 511 | engines: {node: '>=12'} 512 | 513 | ansi-styles@4.3.0: 514 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 515 | engines: {node: '>=8'} 516 | 517 | ansi-styles@6.2.1: 518 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 519 | engines: {node: '>=12'} 520 | 521 | argparse@2.0.1: 522 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 523 | 524 | array-buffer-byte-length@1.0.1: 525 | resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} 526 | engines: {node: '>= 0.4'} 527 | 528 | array-includes@3.1.8: 529 | resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} 530 | engines: {node: '>= 0.4'} 531 | 532 | array.prototype.findlast@1.2.5: 533 | resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} 534 | engines: {node: '>= 0.4'} 535 | 536 | array.prototype.flat@1.3.3: 537 | resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} 538 | engines: {node: '>= 0.4'} 539 | 540 | array.prototype.flatmap@1.3.2: 541 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 542 | engines: {node: '>= 0.4'} 543 | 544 | array.prototype.tosorted@1.1.4: 545 | resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} 546 | engines: {node: '>= 0.4'} 547 | 548 | arraybuffer.prototype.slice@1.0.4: 549 | resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} 550 | engines: {node: '>= 0.4'} 551 | 552 | available-typed-arrays@1.0.7: 553 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} 554 | engines: {node: '>= 0.4'} 555 | 556 | balanced-match@1.0.2: 557 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 558 | 559 | base64-arraybuffer@1.0.2: 560 | resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} 561 | engines: {node: '>= 0.6.0'} 562 | 563 | brace-expansion@1.1.11: 564 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 565 | 566 | braces@3.0.3: 567 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 568 | engines: {node: '>=8'} 569 | 570 | browserslist@4.24.3: 571 | resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} 572 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 573 | hasBin: true 574 | 575 | call-bind-apply-helpers@1.0.1: 576 | resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} 577 | engines: {node: '>= 0.4'} 578 | 579 | call-bind@1.0.8: 580 | resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} 581 | engines: {node: '>= 0.4'} 582 | 583 | call-bound@1.0.2: 584 | resolution: {integrity: sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==} 585 | engines: {node: '>= 0.4'} 586 | 587 | callsites@3.1.0: 588 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 589 | engines: {node: '>=6'} 590 | 591 | camelize@1.0.1: 592 | resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} 593 | 594 | caniuse-lite@1.0.30001688: 595 | resolution: {integrity: sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==} 596 | 597 | chalk@4.1.2: 598 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 599 | engines: {node: '>=10'} 600 | 601 | chalk@5.3.0: 602 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} 603 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 604 | 605 | cli-cursor@4.0.0: 606 | resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} 607 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 608 | 609 | cli-truncate@3.1.0: 610 | resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} 611 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 612 | 613 | color-convert@2.0.1: 614 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 615 | engines: {node: '>=7.0.0'} 616 | 617 | color-name@1.1.4: 618 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 619 | 620 | colorette@2.0.20: 621 | resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} 622 | 623 | commander@11.0.0: 624 | resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} 625 | engines: {node: '>=16'} 626 | 627 | concat-map@0.0.1: 628 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 629 | 630 | convert-source-map@2.0.0: 631 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 632 | 633 | cross-spawn@7.0.6: 634 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 635 | engines: {node: '>= 8'} 636 | 637 | css-color-keywords@1.0.0: 638 | resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} 639 | engines: {node: '>=4'} 640 | 641 | css-line-break@2.1.0: 642 | resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} 643 | 644 | css-to-react-native@3.2.0: 645 | resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} 646 | 647 | csstype@3.1.3: 648 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 649 | 650 | data-view-buffer@1.0.1: 651 | resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} 652 | engines: {node: '>= 0.4'} 653 | 654 | data-view-byte-length@1.0.1: 655 | resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} 656 | engines: {node: '>= 0.4'} 657 | 658 | data-view-byte-offset@1.0.0: 659 | resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} 660 | engines: {node: '>= 0.4'} 661 | 662 | debug@4.3.4: 663 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 664 | engines: {node: '>=6.0'} 665 | peerDependencies: 666 | supports-color: '*' 667 | peerDependenciesMeta: 668 | supports-color: 669 | optional: true 670 | 671 | debug@4.4.0: 672 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 673 | engines: {node: '>=6.0'} 674 | peerDependencies: 675 | supports-color: '*' 676 | peerDependenciesMeta: 677 | supports-color: 678 | optional: true 679 | 680 | deep-is@0.1.4: 681 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 682 | 683 | define-data-property@1.1.4: 684 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 685 | engines: {node: '>= 0.4'} 686 | 687 | define-properties@1.2.1: 688 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 689 | engines: {node: '>= 0.4'} 690 | 691 | doctrine@2.1.0: 692 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 693 | engines: {node: '>=0.10.0'} 694 | 695 | doctrine@3.0.0: 696 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 697 | engines: {node: '>=6.0.0'} 698 | 699 | dunder-proto@1.0.0: 700 | resolution: {integrity: sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==} 701 | engines: {node: '>= 0.4'} 702 | 703 | eastasianwidth@0.2.0: 704 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 705 | 706 | electron-to-chromium@1.5.73: 707 | resolution: {integrity: sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==} 708 | 709 | emoji-regex@9.2.2: 710 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 711 | 712 | es-abstract@1.23.5: 713 | resolution: {integrity: sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==} 714 | engines: {node: '>= 0.4'} 715 | 716 | es-define-property@1.0.1: 717 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 718 | engines: {node: '>= 0.4'} 719 | 720 | es-errors@1.3.0: 721 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 722 | engines: {node: '>= 0.4'} 723 | 724 | es-iterator-helpers@1.2.0: 725 | resolution: {integrity: sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==} 726 | engines: {node: '>= 0.4'} 727 | 728 | es-object-atoms@1.0.0: 729 | resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} 730 | engines: {node: '>= 0.4'} 731 | 732 | es-set-tostringtag@2.0.3: 733 | resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} 734 | engines: {node: '>= 0.4'} 735 | 736 | es-shim-unscopables@1.0.2: 737 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 738 | 739 | es-to-primitive@1.3.0: 740 | resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} 741 | engines: {node: '>= 0.4'} 742 | 743 | esbuild@0.24.0: 744 | resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} 745 | engines: {node: '>=18'} 746 | hasBin: true 747 | 748 | escalade@3.2.0: 749 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 750 | engines: {node: '>=6'} 751 | 752 | escape-string-regexp@4.0.0: 753 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 754 | engines: {node: '>=10'} 755 | 756 | eslint-config-prettier@8.10.0: 757 | resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} 758 | hasBin: true 759 | peerDependencies: 760 | eslint: '>=7.0.0' 761 | 762 | eslint-plugin-react-hooks@4.6.2: 763 | resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} 764 | engines: {node: '>=10'} 765 | peerDependencies: 766 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 767 | 768 | eslint-plugin-react@7.37.2: 769 | resolution: {integrity: sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==} 770 | engines: {node: '>=4'} 771 | peerDependencies: 772 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 773 | 774 | eslint-scope@7.2.2: 775 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 776 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 777 | 778 | eslint-visitor-keys@3.4.3: 779 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 780 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 781 | 782 | eslint@8.57.1: 783 | resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} 784 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 785 | deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. 786 | hasBin: true 787 | 788 | espree@9.6.1: 789 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 790 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 791 | 792 | esquery@1.6.0: 793 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 794 | engines: {node: '>=0.10'} 795 | 796 | esrecurse@4.3.0: 797 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 798 | engines: {node: '>=4.0'} 799 | 800 | estraverse@5.3.0: 801 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 802 | engines: {node: '>=4.0'} 803 | 804 | esutils@2.0.3: 805 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 806 | engines: {node: '>=0.10.0'} 807 | 808 | eventemitter3@5.0.1: 809 | resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} 810 | 811 | execa@7.2.0: 812 | resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} 813 | engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} 814 | 815 | fast-deep-equal@3.1.3: 816 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 817 | 818 | fast-json-stable-stringify@2.1.0: 819 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 820 | 821 | fast-levenshtein@2.0.6: 822 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 823 | 824 | fastq@1.17.1: 825 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 826 | 827 | file-entry-cache@6.0.1: 828 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 829 | engines: {node: ^10.12.0 || >=12.0.0} 830 | 831 | file-saver@2.0.5: 832 | resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} 833 | 834 | fill-range@7.1.1: 835 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 836 | engines: {node: '>=8'} 837 | 838 | find-up@5.0.0: 839 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 840 | engines: {node: '>=10'} 841 | 842 | flat-cache@3.2.0: 843 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 844 | engines: {node: ^10.12.0 || >=12.0.0} 845 | 846 | flatted@3.3.2: 847 | resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} 848 | 849 | for-each@0.3.3: 850 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 851 | 852 | fs.realpath@1.0.0: 853 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 854 | 855 | fsevents@2.3.3: 856 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 857 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 858 | os: [darwin] 859 | 860 | function-bind@1.1.2: 861 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 862 | 863 | function.prototype.name@1.1.7: 864 | resolution: {integrity: sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA==} 865 | engines: {node: '>= 0.4'} 866 | 867 | functions-have-names@1.2.3: 868 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 869 | 870 | gensync@1.0.0-beta.2: 871 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 872 | engines: {node: '>=6.9.0'} 873 | 874 | get-intrinsic@1.2.6: 875 | resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} 876 | engines: {node: '>= 0.4'} 877 | 878 | get-stream@6.0.1: 879 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 880 | engines: {node: '>=10'} 881 | 882 | get-symbol-description@1.0.2: 883 | resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} 884 | engines: {node: '>= 0.4'} 885 | 886 | github-buttons@2.29.1: 887 | resolution: {integrity: sha512-TV3YgAKda5hPz75n7QXmGCsSzgVya1vvmBieebg3EB5ScmashTZ0FldViG1aU2d4V5rcAGrtQ7k5uAaCo0A4PA==} 888 | 889 | glob-parent@6.0.2: 890 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 891 | engines: {node: '>=10.13.0'} 892 | 893 | glob@7.2.3: 894 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 895 | deprecated: Glob versions prior to v9 are no longer supported 896 | 897 | globals@11.12.0: 898 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 899 | engines: {node: '>=4'} 900 | 901 | globals@13.24.0: 902 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 903 | engines: {node: '>=8'} 904 | 905 | globalthis@1.0.4: 906 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} 907 | engines: {node: '>= 0.4'} 908 | 909 | gopd@1.2.0: 910 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 911 | engines: {node: '>= 0.4'} 912 | 913 | graphemer@1.4.0: 914 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 915 | 916 | has-bigints@1.0.2: 917 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 918 | 919 | has-flag@4.0.0: 920 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 921 | engines: {node: '>=8'} 922 | 923 | has-property-descriptors@1.0.2: 924 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 925 | 926 | has-proto@1.2.0: 927 | resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} 928 | engines: {node: '>= 0.4'} 929 | 930 | has-symbols@1.1.0: 931 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 932 | engines: {node: '>= 0.4'} 933 | 934 | has-tostringtag@1.0.2: 935 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 936 | engines: {node: '>= 0.4'} 937 | 938 | hasown@2.0.2: 939 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 940 | engines: {node: '>= 0.4'} 941 | 942 | html2canvas@1.4.1: 943 | resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} 944 | engines: {node: '>=8.0.0'} 945 | 946 | human-signals@4.3.1: 947 | resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} 948 | engines: {node: '>=14.18.0'} 949 | 950 | husky@8.0.3: 951 | resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} 952 | engines: {node: '>=14'} 953 | hasBin: true 954 | 955 | ignore@5.3.2: 956 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 957 | engines: {node: '>= 4'} 958 | 959 | import-fresh@3.3.0: 960 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 961 | engines: {node: '>=6'} 962 | 963 | imurmurhash@0.1.4: 964 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 965 | engines: {node: '>=0.8.19'} 966 | 967 | inflight@1.0.6: 968 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 969 | 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. 970 | 971 | inherits@2.0.4: 972 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 973 | 974 | internal-slot@1.1.0: 975 | resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} 976 | engines: {node: '>= 0.4'} 977 | 978 | is-array-buffer@3.0.4: 979 | resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} 980 | engines: {node: '>= 0.4'} 981 | 982 | is-async-function@2.0.0: 983 | resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} 984 | engines: {node: '>= 0.4'} 985 | 986 | is-bigint@1.1.0: 987 | resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} 988 | engines: {node: '>= 0.4'} 989 | 990 | is-boolean-object@1.2.1: 991 | resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} 992 | engines: {node: '>= 0.4'} 993 | 994 | is-callable@1.2.7: 995 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 996 | engines: {node: '>= 0.4'} 997 | 998 | is-core-module@2.16.0: 999 | resolution: {integrity: sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==} 1000 | engines: {node: '>= 0.4'} 1001 | 1002 | is-data-view@1.0.2: 1003 | resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} 1004 | engines: {node: '>= 0.4'} 1005 | 1006 | is-date-object@1.1.0: 1007 | resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} 1008 | engines: {node: '>= 0.4'} 1009 | 1010 | is-extglob@2.1.1: 1011 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1012 | engines: {node: '>=0.10.0'} 1013 | 1014 | is-finalizationregistry@1.1.0: 1015 | resolution: {integrity: sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==} 1016 | engines: {node: '>= 0.4'} 1017 | 1018 | is-fullwidth-code-point@4.0.0: 1019 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} 1020 | engines: {node: '>=12'} 1021 | 1022 | is-generator-function@1.0.10: 1023 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} 1024 | engines: {node: '>= 0.4'} 1025 | 1026 | is-glob@4.0.3: 1027 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1028 | engines: {node: '>=0.10.0'} 1029 | 1030 | is-map@2.0.3: 1031 | resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} 1032 | engines: {node: '>= 0.4'} 1033 | 1034 | is-negative-zero@2.0.3: 1035 | resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} 1036 | engines: {node: '>= 0.4'} 1037 | 1038 | is-number-object@1.1.0: 1039 | resolution: {integrity: sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==} 1040 | engines: {node: '>= 0.4'} 1041 | 1042 | is-number@7.0.0: 1043 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1044 | engines: {node: '>=0.12.0'} 1045 | 1046 | is-path-inside@3.0.3: 1047 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1048 | engines: {node: '>=8'} 1049 | 1050 | is-regex@1.2.1: 1051 | resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} 1052 | engines: {node: '>= 0.4'} 1053 | 1054 | is-set@2.0.3: 1055 | resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} 1056 | engines: {node: '>= 0.4'} 1057 | 1058 | is-shared-array-buffer@1.0.3: 1059 | resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} 1060 | engines: {node: '>= 0.4'} 1061 | 1062 | is-stream@3.0.0: 1063 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 1064 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1065 | 1066 | is-string@1.1.0: 1067 | resolution: {integrity: sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==} 1068 | engines: {node: '>= 0.4'} 1069 | 1070 | is-symbol@1.1.1: 1071 | resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} 1072 | engines: {node: '>= 0.4'} 1073 | 1074 | is-typed-array@1.1.13: 1075 | resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} 1076 | engines: {node: '>= 0.4'} 1077 | 1078 | is-weakmap@2.0.2: 1079 | resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} 1080 | engines: {node: '>= 0.4'} 1081 | 1082 | is-weakref@1.1.0: 1083 | resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} 1084 | engines: {node: '>= 0.4'} 1085 | 1086 | is-weakset@2.0.3: 1087 | resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} 1088 | engines: {node: '>= 0.4'} 1089 | 1090 | isarray@2.0.5: 1091 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1092 | 1093 | isexe@2.0.0: 1094 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1095 | 1096 | iterator.prototype@1.1.4: 1097 | resolution: {integrity: sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==} 1098 | engines: {node: '>= 0.4'} 1099 | 1100 | js-tokens@4.0.0: 1101 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1102 | 1103 | js-yaml@4.1.0: 1104 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1105 | hasBin: true 1106 | 1107 | jsesc@3.1.0: 1108 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1109 | engines: {node: '>=6'} 1110 | hasBin: true 1111 | 1112 | json-buffer@3.0.1: 1113 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1114 | 1115 | json-schema-traverse@0.4.1: 1116 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1117 | 1118 | json-stable-stringify-without-jsonify@1.0.1: 1119 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1120 | 1121 | json5@2.2.3: 1122 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1123 | engines: {node: '>=6'} 1124 | hasBin: true 1125 | 1126 | jsx-ast-utils@3.3.5: 1127 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} 1128 | engines: {node: '>=4.0'} 1129 | 1130 | keyv@4.5.4: 1131 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1132 | 1133 | levn@0.4.1: 1134 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1135 | engines: {node: '>= 0.8.0'} 1136 | 1137 | lilconfig@2.1.0: 1138 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1139 | engines: {node: '>=10'} 1140 | 1141 | lint-staged@13.3.0: 1142 | resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} 1143 | engines: {node: ^16.14.0 || >=18.0.0} 1144 | hasBin: true 1145 | 1146 | listr2@6.6.1: 1147 | resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} 1148 | engines: {node: '>=16.0.0'} 1149 | peerDependencies: 1150 | enquirer: '>= 2.3.0 < 3' 1151 | peerDependenciesMeta: 1152 | enquirer: 1153 | optional: true 1154 | 1155 | locate-path@6.0.0: 1156 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1157 | engines: {node: '>=10'} 1158 | 1159 | lodash.merge@4.6.2: 1160 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1161 | 1162 | log-update@5.0.1: 1163 | resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} 1164 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1165 | 1166 | loose-envify@1.4.0: 1167 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1168 | hasBin: true 1169 | 1170 | lru-cache@5.1.1: 1171 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1172 | 1173 | math-intrinsics@1.0.0: 1174 | resolution: {integrity: sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==} 1175 | engines: {node: '>= 0.4'} 1176 | 1177 | merge-stream@2.0.0: 1178 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1179 | 1180 | micromatch@4.0.5: 1181 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1182 | engines: {node: '>=8.6'} 1183 | 1184 | mimic-fn@2.1.0: 1185 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1186 | engines: {node: '>=6'} 1187 | 1188 | mimic-fn@4.0.0: 1189 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 1190 | engines: {node: '>=12'} 1191 | 1192 | minimatch@3.1.2: 1193 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1194 | 1195 | ms@2.1.2: 1196 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1197 | 1198 | ms@2.1.3: 1199 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1200 | 1201 | nanoid@3.3.8: 1202 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} 1203 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1204 | hasBin: true 1205 | 1206 | natural-compare@1.4.0: 1207 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1208 | 1209 | node-releases@2.0.19: 1210 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1211 | 1212 | npm-run-path@5.3.0: 1213 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} 1214 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1215 | 1216 | object-assign@4.1.1: 1217 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1218 | engines: {node: '>=0.10.0'} 1219 | 1220 | object-inspect@1.13.3: 1221 | resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} 1222 | engines: {node: '>= 0.4'} 1223 | 1224 | object-keys@1.1.1: 1225 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1226 | engines: {node: '>= 0.4'} 1227 | 1228 | object.assign@4.1.5: 1229 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} 1230 | engines: {node: '>= 0.4'} 1231 | 1232 | object.entries@1.1.8: 1233 | resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} 1234 | engines: {node: '>= 0.4'} 1235 | 1236 | object.fromentries@2.0.8: 1237 | resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} 1238 | engines: {node: '>= 0.4'} 1239 | 1240 | object.values@1.2.0: 1241 | resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} 1242 | engines: {node: '>= 0.4'} 1243 | 1244 | once@1.4.0: 1245 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1246 | 1247 | onetime@5.1.2: 1248 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1249 | engines: {node: '>=6'} 1250 | 1251 | onetime@6.0.0: 1252 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 1253 | engines: {node: '>=12'} 1254 | 1255 | optionator@0.9.4: 1256 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1257 | engines: {node: '>= 0.8.0'} 1258 | 1259 | p-limit@3.1.0: 1260 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1261 | engines: {node: '>=10'} 1262 | 1263 | p-locate@5.0.0: 1264 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1265 | engines: {node: '>=10'} 1266 | 1267 | parent-module@1.0.1: 1268 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1269 | engines: {node: '>=6'} 1270 | 1271 | path-exists@4.0.0: 1272 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1273 | engines: {node: '>=8'} 1274 | 1275 | path-is-absolute@1.0.1: 1276 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1277 | engines: {node: '>=0.10.0'} 1278 | 1279 | path-key@3.1.1: 1280 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1281 | engines: {node: '>=8'} 1282 | 1283 | path-key@4.0.0: 1284 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 1285 | engines: {node: '>=12'} 1286 | 1287 | path-parse@1.0.7: 1288 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1289 | 1290 | picocolors@1.1.1: 1291 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1292 | 1293 | picomatch@2.3.1: 1294 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1295 | engines: {node: '>=8.6'} 1296 | 1297 | pidtree@0.6.0: 1298 | resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} 1299 | engines: {node: '>=0.10'} 1300 | hasBin: true 1301 | 1302 | possible-typed-array-names@1.0.0: 1303 | resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} 1304 | engines: {node: '>= 0.4'} 1305 | 1306 | postcss-value-parser@4.2.0: 1307 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1308 | 1309 | postcss@8.4.38: 1310 | resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} 1311 | engines: {node: ^10 || ^12 || >=14} 1312 | 1313 | postcss@8.4.49: 1314 | resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} 1315 | engines: {node: ^10 || ^12 || >=14} 1316 | 1317 | prelude-ls@1.2.1: 1318 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1319 | engines: {node: '>= 0.8.0'} 1320 | 1321 | prettier@2.8.8: 1322 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 1323 | engines: {node: '>=10.13.0'} 1324 | hasBin: true 1325 | 1326 | prop-types@15.8.1: 1327 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 1328 | 1329 | punycode@2.3.1: 1330 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1331 | engines: {node: '>=6'} 1332 | 1333 | qrcode.react@4.2.0: 1334 | resolution: {integrity: sha512-QpgqWi8rD9DsS9EP3z7BT+5lY5SFhsqGjpgW5DY/i3mK4M9DTBNz3ErMi8BWYEfI3L0d8GIbGmcdFAS1uIRGjA==} 1335 | peerDependencies: 1336 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 1337 | 1338 | queue-microtask@1.2.3: 1339 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1340 | 1341 | react-dom@19.0.0: 1342 | resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} 1343 | peerDependencies: 1344 | react: ^19.0.0 1345 | 1346 | react-github-btn@1.4.0: 1347 | resolution: {integrity: sha512-lV4FYClAfjWnBfv0iNlJUGhamDgIq6TayD0kPZED6VzHWdpcHmPfsYOZ/CFwLfPv4Zp+F4m8QKTj0oy2HjiGXg==} 1348 | peerDependencies: 1349 | react: '>=16.3.0' 1350 | 1351 | react-icons@5.4.0: 1352 | resolution: {integrity: sha512-7eltJxgVt7X64oHh6wSWNwwbKTCtMfK35hcjvJS0yxEAhPM8oUKdS3+kqaW1vicIltw+kR2unHaa12S9pPALoQ==} 1353 | peerDependencies: 1354 | react: '*' 1355 | 1356 | react-is@16.13.1: 1357 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 1358 | 1359 | react-refresh@0.14.2: 1360 | resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} 1361 | engines: {node: '>=0.10.0'} 1362 | 1363 | react@19.0.0: 1364 | resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} 1365 | engines: {node: '>=0.10.0'} 1366 | 1367 | reflect.getprototypeof@1.0.8: 1368 | resolution: {integrity: sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==} 1369 | engines: {node: '>= 0.4'} 1370 | 1371 | regexp.prototype.flags@1.5.3: 1372 | resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} 1373 | engines: {node: '>= 0.4'} 1374 | 1375 | resolve-from@4.0.0: 1376 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1377 | engines: {node: '>=4'} 1378 | 1379 | resolve@2.0.0-next.5: 1380 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} 1381 | hasBin: true 1382 | 1383 | restore-cursor@4.0.0: 1384 | resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} 1385 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1386 | 1387 | reusify@1.0.4: 1388 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1389 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1390 | 1391 | rfdc@1.4.1: 1392 | resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 1393 | 1394 | rimraf@3.0.2: 1395 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1396 | deprecated: Rimraf versions prior to v4 are no longer supported 1397 | hasBin: true 1398 | 1399 | rollup@4.28.1: 1400 | resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} 1401 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1402 | hasBin: true 1403 | 1404 | run-parallel@1.2.0: 1405 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1406 | 1407 | safe-array-concat@1.1.3: 1408 | resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} 1409 | engines: {node: '>=0.4'} 1410 | 1411 | safe-regex-test@1.1.0: 1412 | resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} 1413 | engines: {node: '>= 0.4'} 1414 | 1415 | scheduler@0.25.0: 1416 | resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} 1417 | 1418 | semver@6.3.1: 1419 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1420 | hasBin: true 1421 | 1422 | set-function-length@1.2.2: 1423 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 1424 | engines: {node: '>= 0.4'} 1425 | 1426 | set-function-name@2.0.2: 1427 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} 1428 | engines: {node: '>= 0.4'} 1429 | 1430 | shallowequal@1.1.0: 1431 | resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} 1432 | 1433 | shebang-command@2.0.0: 1434 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1435 | engines: {node: '>=8'} 1436 | 1437 | shebang-regex@3.0.0: 1438 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1439 | engines: {node: '>=8'} 1440 | 1441 | side-channel-list@1.0.0: 1442 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 1443 | engines: {node: '>= 0.4'} 1444 | 1445 | side-channel-map@1.0.1: 1446 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 1447 | engines: {node: '>= 0.4'} 1448 | 1449 | side-channel-weakmap@1.0.2: 1450 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 1451 | engines: {node: '>= 0.4'} 1452 | 1453 | side-channel@1.1.0: 1454 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 1455 | engines: {node: '>= 0.4'} 1456 | 1457 | signal-exit@3.0.7: 1458 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1459 | 1460 | slice-ansi@5.0.0: 1461 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} 1462 | engines: {node: '>=12'} 1463 | 1464 | source-map-js@1.2.1: 1465 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1466 | engines: {node: '>=0.10.0'} 1467 | 1468 | string-argv@0.3.2: 1469 | resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} 1470 | engines: {node: '>=0.6.19'} 1471 | 1472 | string-width@5.1.2: 1473 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1474 | engines: {node: '>=12'} 1475 | 1476 | string.prototype.matchall@4.0.11: 1477 | resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} 1478 | engines: {node: '>= 0.4'} 1479 | 1480 | string.prototype.repeat@1.0.0: 1481 | resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} 1482 | 1483 | string.prototype.trim@1.2.10: 1484 | resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} 1485 | engines: {node: '>= 0.4'} 1486 | 1487 | string.prototype.trimend@1.0.9: 1488 | resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} 1489 | engines: {node: '>= 0.4'} 1490 | 1491 | string.prototype.trimstart@1.0.8: 1492 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} 1493 | engines: {node: '>= 0.4'} 1494 | 1495 | strip-ansi@6.0.1: 1496 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1497 | engines: {node: '>=8'} 1498 | 1499 | strip-ansi@7.1.0: 1500 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1501 | engines: {node: '>=12'} 1502 | 1503 | strip-final-newline@3.0.0: 1504 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 1505 | engines: {node: '>=12'} 1506 | 1507 | strip-json-comments@3.1.1: 1508 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1509 | engines: {node: '>=8'} 1510 | 1511 | styled-components@6.1.13: 1512 | resolution: {integrity: sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==} 1513 | engines: {node: '>= 16'} 1514 | peerDependencies: 1515 | react: '>= 16.8.0' 1516 | react-dom: '>= 16.8.0' 1517 | 1518 | styled-reset@4.5.2: 1519 | resolution: {integrity: sha512-dbAaaVEhweBs2FGfqGBdW6oMcMK8238C2X5KCxBhUQJX92m/QyUfzRADOXhdXiXNkIPELtMCd72YY9eCdORfIw==} 1520 | engines: {node: '>=18.0.0'} 1521 | peerDependencies: 1522 | styled-components: '>=4.0.0 || >=5.0.0 || >=6.0.0' 1523 | 1524 | stylis@4.3.2: 1525 | resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==} 1526 | 1527 | supports-color@7.2.0: 1528 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1529 | engines: {node: '>=8'} 1530 | 1531 | supports-preserve-symlinks-flag@1.0.0: 1532 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1533 | engines: {node: '>= 0.4'} 1534 | 1535 | text-segmentation@1.0.3: 1536 | resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} 1537 | 1538 | text-table@0.2.0: 1539 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1540 | 1541 | to-regex-range@5.0.1: 1542 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1543 | engines: {node: '>=8.0'} 1544 | 1545 | tslib@2.6.2: 1546 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 1547 | 1548 | type-check@0.4.0: 1549 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1550 | engines: {node: '>= 0.8.0'} 1551 | 1552 | type-fest@0.20.2: 1553 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1554 | engines: {node: '>=10'} 1555 | 1556 | type-fest@1.4.0: 1557 | resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} 1558 | engines: {node: '>=10'} 1559 | 1560 | typed-array-buffer@1.0.2: 1561 | resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} 1562 | engines: {node: '>= 0.4'} 1563 | 1564 | typed-array-byte-length@1.0.1: 1565 | resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} 1566 | engines: {node: '>= 0.4'} 1567 | 1568 | typed-array-byte-offset@1.0.3: 1569 | resolution: {integrity: sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==} 1570 | engines: {node: '>= 0.4'} 1571 | 1572 | typed-array-length@1.0.7: 1573 | resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} 1574 | engines: {node: '>= 0.4'} 1575 | 1576 | unbox-primitive@1.0.2: 1577 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 1578 | 1579 | update-browserslist-db@1.1.1: 1580 | resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} 1581 | hasBin: true 1582 | peerDependencies: 1583 | browserslist: '>= 4.21.0' 1584 | 1585 | uri-js@4.4.1: 1586 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1587 | 1588 | utrie@1.0.2: 1589 | resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} 1590 | 1591 | vite@6.0.3: 1592 | resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} 1593 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1594 | hasBin: true 1595 | peerDependencies: 1596 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1597 | jiti: '>=1.21.0' 1598 | less: '*' 1599 | lightningcss: ^1.21.0 1600 | sass: '*' 1601 | sass-embedded: '*' 1602 | stylus: '*' 1603 | sugarss: '*' 1604 | terser: ^5.16.0 1605 | tsx: ^4.8.1 1606 | yaml: ^2.4.2 1607 | peerDependenciesMeta: 1608 | '@types/node': 1609 | optional: true 1610 | jiti: 1611 | optional: true 1612 | less: 1613 | optional: true 1614 | lightningcss: 1615 | optional: true 1616 | sass: 1617 | optional: true 1618 | sass-embedded: 1619 | optional: true 1620 | stylus: 1621 | optional: true 1622 | sugarss: 1623 | optional: true 1624 | terser: 1625 | optional: true 1626 | tsx: 1627 | optional: true 1628 | yaml: 1629 | optional: true 1630 | 1631 | which-boxed-primitive@1.1.0: 1632 | resolution: {integrity: sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==} 1633 | engines: {node: '>= 0.4'} 1634 | 1635 | which-builtin-type@1.2.1: 1636 | resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} 1637 | engines: {node: '>= 0.4'} 1638 | 1639 | which-collection@1.0.2: 1640 | resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} 1641 | engines: {node: '>= 0.4'} 1642 | 1643 | which-typed-array@1.1.16: 1644 | resolution: {integrity: sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==} 1645 | engines: {node: '>= 0.4'} 1646 | 1647 | which@2.0.2: 1648 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1649 | engines: {node: '>= 8'} 1650 | hasBin: true 1651 | 1652 | word-wrap@1.2.5: 1653 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1654 | engines: {node: '>=0.10.0'} 1655 | 1656 | wrap-ansi@8.1.0: 1657 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1658 | engines: {node: '>=12'} 1659 | 1660 | wrappy@1.0.2: 1661 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1662 | 1663 | yallist@3.1.1: 1664 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1665 | 1666 | yaml@2.3.1: 1667 | resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} 1668 | engines: {node: '>= 14'} 1669 | 1670 | yocto-queue@0.1.0: 1671 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1672 | engines: {node: '>=10'} 1673 | 1674 | snapshots: 1675 | 1676 | '@ampproject/remapping@2.3.0': 1677 | dependencies: 1678 | '@jridgewell/gen-mapping': 0.3.8 1679 | '@jridgewell/trace-mapping': 0.3.25 1680 | 1681 | '@babel/code-frame@7.26.2': 1682 | dependencies: 1683 | '@babel/helper-validator-identifier': 7.25.9 1684 | js-tokens: 4.0.0 1685 | picocolors: 1.1.1 1686 | 1687 | '@babel/compat-data@7.26.3': {} 1688 | 1689 | '@babel/core@7.26.0': 1690 | dependencies: 1691 | '@ampproject/remapping': 2.3.0 1692 | '@babel/code-frame': 7.26.2 1693 | '@babel/generator': 7.26.3 1694 | '@babel/helper-compilation-targets': 7.25.9 1695 | '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) 1696 | '@babel/helpers': 7.26.0 1697 | '@babel/parser': 7.26.3 1698 | '@babel/template': 7.25.9 1699 | '@babel/traverse': 7.26.4 1700 | '@babel/types': 7.26.3 1701 | convert-source-map: 2.0.0 1702 | debug: 4.4.0 1703 | gensync: 1.0.0-beta.2 1704 | json5: 2.2.3 1705 | semver: 6.3.1 1706 | transitivePeerDependencies: 1707 | - supports-color 1708 | 1709 | '@babel/generator@7.26.3': 1710 | dependencies: 1711 | '@babel/parser': 7.26.3 1712 | '@babel/types': 7.26.3 1713 | '@jridgewell/gen-mapping': 0.3.8 1714 | '@jridgewell/trace-mapping': 0.3.25 1715 | jsesc: 3.1.0 1716 | 1717 | '@babel/helper-compilation-targets@7.25.9': 1718 | dependencies: 1719 | '@babel/compat-data': 7.26.3 1720 | '@babel/helper-validator-option': 7.25.9 1721 | browserslist: 4.24.3 1722 | lru-cache: 5.1.1 1723 | semver: 6.3.1 1724 | 1725 | '@babel/helper-module-imports@7.25.9': 1726 | dependencies: 1727 | '@babel/traverse': 7.26.4 1728 | '@babel/types': 7.26.3 1729 | transitivePeerDependencies: 1730 | - supports-color 1731 | 1732 | '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': 1733 | dependencies: 1734 | '@babel/core': 7.26.0 1735 | '@babel/helper-module-imports': 7.25.9 1736 | '@babel/helper-validator-identifier': 7.25.9 1737 | '@babel/traverse': 7.26.4 1738 | transitivePeerDependencies: 1739 | - supports-color 1740 | 1741 | '@babel/helper-plugin-utils@7.25.9': {} 1742 | 1743 | '@babel/helper-string-parser@7.25.9': {} 1744 | 1745 | '@babel/helper-validator-identifier@7.25.9': {} 1746 | 1747 | '@babel/helper-validator-option@7.25.9': {} 1748 | 1749 | '@babel/helpers@7.26.0': 1750 | dependencies: 1751 | '@babel/template': 7.25.9 1752 | '@babel/types': 7.26.3 1753 | 1754 | '@babel/parser@7.26.3': 1755 | dependencies: 1756 | '@babel/types': 7.26.3 1757 | 1758 | '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': 1759 | dependencies: 1760 | '@babel/core': 7.26.0 1761 | '@babel/helper-plugin-utils': 7.25.9 1762 | 1763 | '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': 1764 | dependencies: 1765 | '@babel/core': 7.26.0 1766 | '@babel/helper-plugin-utils': 7.25.9 1767 | 1768 | '@babel/template@7.25.9': 1769 | dependencies: 1770 | '@babel/code-frame': 7.26.2 1771 | '@babel/parser': 7.26.3 1772 | '@babel/types': 7.26.3 1773 | 1774 | '@babel/traverse@7.26.4': 1775 | dependencies: 1776 | '@babel/code-frame': 7.26.2 1777 | '@babel/generator': 7.26.3 1778 | '@babel/parser': 7.26.3 1779 | '@babel/template': 7.25.9 1780 | '@babel/types': 7.26.3 1781 | debug: 4.4.0 1782 | globals: 11.12.0 1783 | transitivePeerDependencies: 1784 | - supports-color 1785 | 1786 | '@babel/types@7.26.3': 1787 | dependencies: 1788 | '@babel/helper-string-parser': 7.25.9 1789 | '@babel/helper-validator-identifier': 7.25.9 1790 | 1791 | '@emotion/is-prop-valid@1.2.2': 1792 | dependencies: 1793 | '@emotion/memoize': 0.8.1 1794 | 1795 | '@emotion/memoize@0.8.1': {} 1796 | 1797 | '@emotion/unitless@0.8.1': {} 1798 | 1799 | '@esbuild/aix-ppc64@0.24.0': 1800 | optional: true 1801 | 1802 | '@esbuild/android-arm64@0.24.0': 1803 | optional: true 1804 | 1805 | '@esbuild/android-arm@0.24.0': 1806 | optional: true 1807 | 1808 | '@esbuild/android-x64@0.24.0': 1809 | optional: true 1810 | 1811 | '@esbuild/darwin-arm64@0.24.0': 1812 | optional: true 1813 | 1814 | '@esbuild/darwin-x64@0.24.0': 1815 | optional: true 1816 | 1817 | '@esbuild/freebsd-arm64@0.24.0': 1818 | optional: true 1819 | 1820 | '@esbuild/freebsd-x64@0.24.0': 1821 | optional: true 1822 | 1823 | '@esbuild/linux-arm64@0.24.0': 1824 | optional: true 1825 | 1826 | '@esbuild/linux-arm@0.24.0': 1827 | optional: true 1828 | 1829 | '@esbuild/linux-ia32@0.24.0': 1830 | optional: true 1831 | 1832 | '@esbuild/linux-loong64@0.24.0': 1833 | optional: true 1834 | 1835 | '@esbuild/linux-mips64el@0.24.0': 1836 | optional: true 1837 | 1838 | '@esbuild/linux-ppc64@0.24.0': 1839 | optional: true 1840 | 1841 | '@esbuild/linux-riscv64@0.24.0': 1842 | optional: true 1843 | 1844 | '@esbuild/linux-s390x@0.24.0': 1845 | optional: true 1846 | 1847 | '@esbuild/linux-x64@0.24.0': 1848 | optional: true 1849 | 1850 | '@esbuild/netbsd-x64@0.24.0': 1851 | optional: true 1852 | 1853 | '@esbuild/openbsd-arm64@0.24.0': 1854 | optional: true 1855 | 1856 | '@esbuild/openbsd-x64@0.24.0': 1857 | optional: true 1858 | 1859 | '@esbuild/sunos-x64@0.24.0': 1860 | optional: true 1861 | 1862 | '@esbuild/win32-arm64@0.24.0': 1863 | optional: true 1864 | 1865 | '@esbuild/win32-ia32@0.24.0': 1866 | optional: true 1867 | 1868 | '@esbuild/win32-x64@0.24.0': 1869 | optional: true 1870 | 1871 | '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': 1872 | dependencies: 1873 | eslint: 8.57.1 1874 | eslint-visitor-keys: 3.4.3 1875 | 1876 | '@eslint-community/regexpp@4.12.1': {} 1877 | 1878 | '@eslint/eslintrc@2.1.4': 1879 | dependencies: 1880 | ajv: 6.12.6 1881 | debug: 4.4.0 1882 | espree: 9.6.1 1883 | globals: 13.24.0 1884 | ignore: 5.3.2 1885 | import-fresh: 3.3.0 1886 | js-yaml: 4.1.0 1887 | minimatch: 3.1.2 1888 | strip-json-comments: 3.1.1 1889 | transitivePeerDependencies: 1890 | - supports-color 1891 | 1892 | '@eslint/js@8.57.1': {} 1893 | 1894 | '@humanwhocodes/config-array@0.13.0': 1895 | dependencies: 1896 | '@humanwhocodes/object-schema': 2.0.3 1897 | debug: 4.4.0 1898 | minimatch: 3.1.2 1899 | transitivePeerDependencies: 1900 | - supports-color 1901 | 1902 | '@humanwhocodes/module-importer@1.0.1': {} 1903 | 1904 | '@humanwhocodes/object-schema@2.0.3': {} 1905 | 1906 | '@jridgewell/gen-mapping@0.3.8': 1907 | dependencies: 1908 | '@jridgewell/set-array': 1.2.1 1909 | '@jridgewell/sourcemap-codec': 1.5.0 1910 | '@jridgewell/trace-mapping': 0.3.25 1911 | 1912 | '@jridgewell/resolve-uri@3.1.2': {} 1913 | 1914 | '@jridgewell/set-array@1.2.1': {} 1915 | 1916 | '@jridgewell/sourcemap-codec@1.5.0': {} 1917 | 1918 | '@jridgewell/trace-mapping@0.3.25': 1919 | dependencies: 1920 | '@jridgewell/resolve-uri': 3.1.2 1921 | '@jridgewell/sourcemap-codec': 1.5.0 1922 | 1923 | '@nodelib/fs.scandir@2.1.5': 1924 | dependencies: 1925 | '@nodelib/fs.stat': 2.0.5 1926 | run-parallel: 1.2.0 1927 | 1928 | '@nodelib/fs.stat@2.0.5': {} 1929 | 1930 | '@nodelib/fs.walk@1.2.8': 1931 | dependencies: 1932 | '@nodelib/fs.scandir': 2.1.5 1933 | fastq: 1.17.1 1934 | 1935 | '@rollup/rollup-android-arm-eabi@4.28.1': 1936 | optional: true 1937 | 1938 | '@rollup/rollup-android-arm64@4.28.1': 1939 | optional: true 1940 | 1941 | '@rollup/rollup-darwin-arm64@4.28.1': 1942 | optional: true 1943 | 1944 | '@rollup/rollup-darwin-x64@4.28.1': 1945 | optional: true 1946 | 1947 | '@rollup/rollup-freebsd-arm64@4.28.1': 1948 | optional: true 1949 | 1950 | '@rollup/rollup-freebsd-x64@4.28.1': 1951 | optional: true 1952 | 1953 | '@rollup/rollup-linux-arm-gnueabihf@4.28.1': 1954 | optional: true 1955 | 1956 | '@rollup/rollup-linux-arm-musleabihf@4.28.1': 1957 | optional: true 1958 | 1959 | '@rollup/rollup-linux-arm64-gnu@4.28.1': 1960 | optional: true 1961 | 1962 | '@rollup/rollup-linux-arm64-musl@4.28.1': 1963 | optional: true 1964 | 1965 | '@rollup/rollup-linux-loongarch64-gnu@4.28.1': 1966 | optional: true 1967 | 1968 | '@rollup/rollup-linux-powerpc64le-gnu@4.28.1': 1969 | optional: true 1970 | 1971 | '@rollup/rollup-linux-riscv64-gnu@4.28.1': 1972 | optional: true 1973 | 1974 | '@rollup/rollup-linux-s390x-gnu@4.28.1': 1975 | optional: true 1976 | 1977 | '@rollup/rollup-linux-x64-gnu@4.28.1': 1978 | optional: true 1979 | 1980 | '@rollup/rollup-linux-x64-musl@4.28.1': 1981 | optional: true 1982 | 1983 | '@rollup/rollup-win32-arm64-msvc@4.28.1': 1984 | optional: true 1985 | 1986 | '@rollup/rollup-win32-ia32-msvc@4.28.1': 1987 | optional: true 1988 | 1989 | '@rollup/rollup-win32-x64-msvc@4.28.1': 1990 | optional: true 1991 | 1992 | '@types/babel__core@7.20.5': 1993 | dependencies: 1994 | '@babel/parser': 7.26.3 1995 | '@babel/types': 7.26.3 1996 | '@types/babel__generator': 7.6.8 1997 | '@types/babel__template': 7.4.4 1998 | '@types/babel__traverse': 7.20.6 1999 | 2000 | '@types/babel__generator@7.6.8': 2001 | dependencies: 2002 | '@babel/types': 7.26.3 2003 | 2004 | '@types/babel__template@7.4.4': 2005 | dependencies: 2006 | '@babel/parser': 7.26.3 2007 | '@babel/types': 7.26.3 2008 | 2009 | '@types/babel__traverse@7.20.6': 2010 | dependencies: 2011 | '@babel/types': 7.26.3 2012 | 2013 | '@types/estree@1.0.6': {} 2014 | 2015 | '@types/stylis@4.2.5': {} 2016 | 2017 | '@ungap/structured-clone@1.2.1': {} 2018 | 2019 | '@vitejs/plugin-react@4.3.4(vite@6.0.3)': 2020 | dependencies: 2021 | '@babel/core': 7.26.0 2022 | '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) 2023 | '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) 2024 | '@types/babel__core': 7.20.5 2025 | react-refresh: 0.14.2 2026 | vite: 6.0.3 2027 | transitivePeerDependencies: 2028 | - supports-color 2029 | 2030 | acorn-jsx@5.3.2(acorn@8.14.0): 2031 | dependencies: 2032 | acorn: 8.14.0 2033 | 2034 | acorn@8.14.0: {} 2035 | 2036 | ajv@6.12.6: 2037 | dependencies: 2038 | fast-deep-equal: 3.1.3 2039 | fast-json-stable-stringify: 2.1.0 2040 | json-schema-traverse: 0.4.1 2041 | uri-js: 4.4.1 2042 | 2043 | ansi-escapes@5.0.0: 2044 | dependencies: 2045 | type-fest: 1.4.0 2046 | 2047 | ansi-regex@5.0.1: {} 2048 | 2049 | ansi-regex@6.1.0: {} 2050 | 2051 | ansi-styles@4.3.0: 2052 | dependencies: 2053 | color-convert: 2.0.1 2054 | 2055 | ansi-styles@6.2.1: {} 2056 | 2057 | argparse@2.0.1: {} 2058 | 2059 | array-buffer-byte-length@1.0.1: 2060 | dependencies: 2061 | call-bind: 1.0.8 2062 | is-array-buffer: 3.0.4 2063 | 2064 | array-includes@3.1.8: 2065 | dependencies: 2066 | call-bind: 1.0.8 2067 | define-properties: 1.2.1 2068 | es-abstract: 1.23.5 2069 | es-object-atoms: 1.0.0 2070 | get-intrinsic: 1.2.6 2071 | is-string: 1.1.0 2072 | 2073 | array.prototype.findlast@1.2.5: 2074 | dependencies: 2075 | call-bind: 1.0.8 2076 | define-properties: 1.2.1 2077 | es-abstract: 1.23.5 2078 | es-errors: 1.3.0 2079 | es-object-atoms: 1.0.0 2080 | es-shim-unscopables: 1.0.2 2081 | 2082 | array.prototype.flat@1.3.3: 2083 | dependencies: 2084 | call-bind: 1.0.8 2085 | define-properties: 1.2.1 2086 | es-abstract: 1.23.5 2087 | es-shim-unscopables: 1.0.2 2088 | 2089 | array.prototype.flatmap@1.3.2: 2090 | dependencies: 2091 | call-bind: 1.0.8 2092 | define-properties: 1.2.1 2093 | es-abstract: 1.23.5 2094 | es-shim-unscopables: 1.0.2 2095 | 2096 | array.prototype.tosorted@1.1.4: 2097 | dependencies: 2098 | call-bind: 1.0.8 2099 | define-properties: 1.2.1 2100 | es-abstract: 1.23.5 2101 | es-errors: 1.3.0 2102 | es-shim-unscopables: 1.0.2 2103 | 2104 | arraybuffer.prototype.slice@1.0.4: 2105 | dependencies: 2106 | array-buffer-byte-length: 1.0.1 2107 | call-bind: 1.0.8 2108 | define-properties: 1.2.1 2109 | es-abstract: 1.23.5 2110 | es-errors: 1.3.0 2111 | get-intrinsic: 1.2.6 2112 | is-array-buffer: 3.0.4 2113 | 2114 | available-typed-arrays@1.0.7: 2115 | dependencies: 2116 | possible-typed-array-names: 1.0.0 2117 | 2118 | balanced-match@1.0.2: {} 2119 | 2120 | base64-arraybuffer@1.0.2: {} 2121 | 2122 | brace-expansion@1.1.11: 2123 | dependencies: 2124 | balanced-match: 1.0.2 2125 | concat-map: 0.0.1 2126 | 2127 | braces@3.0.3: 2128 | dependencies: 2129 | fill-range: 7.1.1 2130 | 2131 | browserslist@4.24.3: 2132 | dependencies: 2133 | caniuse-lite: 1.0.30001688 2134 | electron-to-chromium: 1.5.73 2135 | node-releases: 2.0.19 2136 | update-browserslist-db: 1.1.1(browserslist@4.24.3) 2137 | 2138 | call-bind-apply-helpers@1.0.1: 2139 | dependencies: 2140 | es-errors: 1.3.0 2141 | function-bind: 1.1.2 2142 | 2143 | call-bind@1.0.8: 2144 | dependencies: 2145 | call-bind-apply-helpers: 1.0.1 2146 | es-define-property: 1.0.1 2147 | get-intrinsic: 1.2.6 2148 | set-function-length: 1.2.2 2149 | 2150 | call-bound@1.0.2: 2151 | dependencies: 2152 | call-bind: 1.0.8 2153 | get-intrinsic: 1.2.6 2154 | 2155 | callsites@3.1.0: {} 2156 | 2157 | camelize@1.0.1: {} 2158 | 2159 | caniuse-lite@1.0.30001688: {} 2160 | 2161 | chalk@4.1.2: 2162 | dependencies: 2163 | ansi-styles: 4.3.0 2164 | supports-color: 7.2.0 2165 | 2166 | chalk@5.3.0: {} 2167 | 2168 | cli-cursor@4.0.0: 2169 | dependencies: 2170 | restore-cursor: 4.0.0 2171 | 2172 | cli-truncate@3.1.0: 2173 | dependencies: 2174 | slice-ansi: 5.0.0 2175 | string-width: 5.1.2 2176 | 2177 | color-convert@2.0.1: 2178 | dependencies: 2179 | color-name: 1.1.4 2180 | 2181 | color-name@1.1.4: {} 2182 | 2183 | colorette@2.0.20: {} 2184 | 2185 | commander@11.0.0: {} 2186 | 2187 | concat-map@0.0.1: {} 2188 | 2189 | convert-source-map@2.0.0: {} 2190 | 2191 | cross-spawn@7.0.6: 2192 | dependencies: 2193 | path-key: 3.1.1 2194 | shebang-command: 2.0.0 2195 | which: 2.0.2 2196 | 2197 | css-color-keywords@1.0.0: {} 2198 | 2199 | css-line-break@2.1.0: 2200 | dependencies: 2201 | utrie: 1.0.2 2202 | 2203 | css-to-react-native@3.2.0: 2204 | dependencies: 2205 | camelize: 1.0.1 2206 | css-color-keywords: 1.0.0 2207 | postcss-value-parser: 4.2.0 2208 | 2209 | csstype@3.1.3: {} 2210 | 2211 | data-view-buffer@1.0.1: 2212 | dependencies: 2213 | call-bind: 1.0.8 2214 | es-errors: 1.3.0 2215 | is-data-view: 1.0.2 2216 | 2217 | data-view-byte-length@1.0.1: 2218 | dependencies: 2219 | call-bind: 1.0.8 2220 | es-errors: 1.3.0 2221 | is-data-view: 1.0.2 2222 | 2223 | data-view-byte-offset@1.0.0: 2224 | dependencies: 2225 | call-bind: 1.0.8 2226 | es-errors: 1.3.0 2227 | is-data-view: 1.0.2 2228 | 2229 | debug@4.3.4: 2230 | dependencies: 2231 | ms: 2.1.2 2232 | 2233 | debug@4.4.0: 2234 | dependencies: 2235 | ms: 2.1.3 2236 | 2237 | deep-is@0.1.4: {} 2238 | 2239 | define-data-property@1.1.4: 2240 | dependencies: 2241 | es-define-property: 1.0.1 2242 | es-errors: 1.3.0 2243 | gopd: 1.2.0 2244 | 2245 | define-properties@1.2.1: 2246 | dependencies: 2247 | define-data-property: 1.1.4 2248 | has-property-descriptors: 1.0.2 2249 | object-keys: 1.1.1 2250 | 2251 | doctrine@2.1.0: 2252 | dependencies: 2253 | esutils: 2.0.3 2254 | 2255 | doctrine@3.0.0: 2256 | dependencies: 2257 | esutils: 2.0.3 2258 | 2259 | dunder-proto@1.0.0: 2260 | dependencies: 2261 | call-bind-apply-helpers: 1.0.1 2262 | es-errors: 1.3.0 2263 | gopd: 1.2.0 2264 | 2265 | eastasianwidth@0.2.0: {} 2266 | 2267 | electron-to-chromium@1.5.73: {} 2268 | 2269 | emoji-regex@9.2.2: {} 2270 | 2271 | es-abstract@1.23.5: 2272 | dependencies: 2273 | array-buffer-byte-length: 1.0.1 2274 | arraybuffer.prototype.slice: 1.0.4 2275 | available-typed-arrays: 1.0.7 2276 | call-bind: 1.0.8 2277 | data-view-buffer: 1.0.1 2278 | data-view-byte-length: 1.0.1 2279 | data-view-byte-offset: 1.0.0 2280 | es-define-property: 1.0.1 2281 | es-errors: 1.3.0 2282 | es-object-atoms: 1.0.0 2283 | es-set-tostringtag: 2.0.3 2284 | es-to-primitive: 1.3.0 2285 | function.prototype.name: 1.1.7 2286 | get-intrinsic: 1.2.6 2287 | get-symbol-description: 1.0.2 2288 | globalthis: 1.0.4 2289 | gopd: 1.2.0 2290 | has-property-descriptors: 1.0.2 2291 | has-proto: 1.2.0 2292 | has-symbols: 1.1.0 2293 | hasown: 2.0.2 2294 | internal-slot: 1.1.0 2295 | is-array-buffer: 3.0.4 2296 | is-callable: 1.2.7 2297 | is-data-view: 1.0.2 2298 | is-negative-zero: 2.0.3 2299 | is-regex: 1.2.1 2300 | is-shared-array-buffer: 1.0.3 2301 | is-string: 1.1.0 2302 | is-typed-array: 1.1.13 2303 | is-weakref: 1.1.0 2304 | object-inspect: 1.13.3 2305 | object-keys: 1.1.1 2306 | object.assign: 4.1.5 2307 | regexp.prototype.flags: 1.5.3 2308 | safe-array-concat: 1.1.3 2309 | safe-regex-test: 1.1.0 2310 | string.prototype.trim: 1.2.10 2311 | string.prototype.trimend: 1.0.9 2312 | string.prototype.trimstart: 1.0.8 2313 | typed-array-buffer: 1.0.2 2314 | typed-array-byte-length: 1.0.1 2315 | typed-array-byte-offset: 1.0.3 2316 | typed-array-length: 1.0.7 2317 | unbox-primitive: 1.0.2 2318 | which-typed-array: 1.1.16 2319 | 2320 | es-define-property@1.0.1: {} 2321 | 2322 | es-errors@1.3.0: {} 2323 | 2324 | es-iterator-helpers@1.2.0: 2325 | dependencies: 2326 | call-bind: 1.0.8 2327 | define-properties: 1.2.1 2328 | es-abstract: 1.23.5 2329 | es-errors: 1.3.0 2330 | es-set-tostringtag: 2.0.3 2331 | function-bind: 1.1.2 2332 | get-intrinsic: 1.2.6 2333 | globalthis: 1.0.4 2334 | gopd: 1.2.0 2335 | has-property-descriptors: 1.0.2 2336 | has-proto: 1.2.0 2337 | has-symbols: 1.1.0 2338 | internal-slot: 1.1.0 2339 | iterator.prototype: 1.1.4 2340 | safe-array-concat: 1.1.3 2341 | 2342 | es-object-atoms@1.0.0: 2343 | dependencies: 2344 | es-errors: 1.3.0 2345 | 2346 | es-set-tostringtag@2.0.3: 2347 | dependencies: 2348 | get-intrinsic: 1.2.6 2349 | has-tostringtag: 1.0.2 2350 | hasown: 2.0.2 2351 | 2352 | es-shim-unscopables@1.0.2: 2353 | dependencies: 2354 | hasown: 2.0.2 2355 | 2356 | es-to-primitive@1.3.0: 2357 | dependencies: 2358 | is-callable: 1.2.7 2359 | is-date-object: 1.1.0 2360 | is-symbol: 1.1.1 2361 | 2362 | esbuild@0.24.0: 2363 | optionalDependencies: 2364 | '@esbuild/aix-ppc64': 0.24.0 2365 | '@esbuild/android-arm': 0.24.0 2366 | '@esbuild/android-arm64': 0.24.0 2367 | '@esbuild/android-x64': 0.24.0 2368 | '@esbuild/darwin-arm64': 0.24.0 2369 | '@esbuild/darwin-x64': 0.24.0 2370 | '@esbuild/freebsd-arm64': 0.24.0 2371 | '@esbuild/freebsd-x64': 0.24.0 2372 | '@esbuild/linux-arm': 0.24.0 2373 | '@esbuild/linux-arm64': 0.24.0 2374 | '@esbuild/linux-ia32': 0.24.0 2375 | '@esbuild/linux-loong64': 0.24.0 2376 | '@esbuild/linux-mips64el': 0.24.0 2377 | '@esbuild/linux-ppc64': 0.24.0 2378 | '@esbuild/linux-riscv64': 0.24.0 2379 | '@esbuild/linux-s390x': 0.24.0 2380 | '@esbuild/linux-x64': 0.24.0 2381 | '@esbuild/netbsd-x64': 0.24.0 2382 | '@esbuild/openbsd-arm64': 0.24.0 2383 | '@esbuild/openbsd-x64': 0.24.0 2384 | '@esbuild/sunos-x64': 0.24.0 2385 | '@esbuild/win32-arm64': 0.24.0 2386 | '@esbuild/win32-ia32': 0.24.0 2387 | '@esbuild/win32-x64': 0.24.0 2388 | 2389 | escalade@3.2.0: {} 2390 | 2391 | escape-string-regexp@4.0.0: {} 2392 | 2393 | eslint-config-prettier@8.10.0(eslint@8.57.1): 2394 | dependencies: 2395 | eslint: 8.57.1 2396 | 2397 | eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): 2398 | dependencies: 2399 | eslint: 8.57.1 2400 | 2401 | eslint-plugin-react@7.37.2(eslint@8.57.1): 2402 | dependencies: 2403 | array-includes: 3.1.8 2404 | array.prototype.findlast: 1.2.5 2405 | array.prototype.flatmap: 1.3.2 2406 | array.prototype.tosorted: 1.1.4 2407 | doctrine: 2.1.0 2408 | es-iterator-helpers: 1.2.0 2409 | eslint: 8.57.1 2410 | estraverse: 5.3.0 2411 | hasown: 2.0.2 2412 | jsx-ast-utils: 3.3.5 2413 | minimatch: 3.1.2 2414 | object.entries: 1.1.8 2415 | object.fromentries: 2.0.8 2416 | object.values: 1.2.0 2417 | prop-types: 15.8.1 2418 | resolve: 2.0.0-next.5 2419 | semver: 6.3.1 2420 | string.prototype.matchall: 4.0.11 2421 | string.prototype.repeat: 1.0.0 2422 | 2423 | eslint-scope@7.2.2: 2424 | dependencies: 2425 | esrecurse: 4.3.0 2426 | estraverse: 5.3.0 2427 | 2428 | eslint-visitor-keys@3.4.3: {} 2429 | 2430 | eslint@8.57.1: 2431 | dependencies: 2432 | '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) 2433 | '@eslint-community/regexpp': 4.12.1 2434 | '@eslint/eslintrc': 2.1.4 2435 | '@eslint/js': 8.57.1 2436 | '@humanwhocodes/config-array': 0.13.0 2437 | '@humanwhocodes/module-importer': 1.0.1 2438 | '@nodelib/fs.walk': 1.2.8 2439 | '@ungap/structured-clone': 1.2.1 2440 | ajv: 6.12.6 2441 | chalk: 4.1.2 2442 | cross-spawn: 7.0.6 2443 | debug: 4.4.0 2444 | doctrine: 3.0.0 2445 | escape-string-regexp: 4.0.0 2446 | eslint-scope: 7.2.2 2447 | eslint-visitor-keys: 3.4.3 2448 | espree: 9.6.1 2449 | esquery: 1.6.0 2450 | esutils: 2.0.3 2451 | fast-deep-equal: 3.1.3 2452 | file-entry-cache: 6.0.1 2453 | find-up: 5.0.0 2454 | glob-parent: 6.0.2 2455 | globals: 13.24.0 2456 | graphemer: 1.4.0 2457 | ignore: 5.3.2 2458 | imurmurhash: 0.1.4 2459 | is-glob: 4.0.3 2460 | is-path-inside: 3.0.3 2461 | js-yaml: 4.1.0 2462 | json-stable-stringify-without-jsonify: 1.0.1 2463 | levn: 0.4.1 2464 | lodash.merge: 4.6.2 2465 | minimatch: 3.1.2 2466 | natural-compare: 1.4.0 2467 | optionator: 0.9.4 2468 | strip-ansi: 6.0.1 2469 | text-table: 0.2.0 2470 | transitivePeerDependencies: 2471 | - supports-color 2472 | 2473 | espree@9.6.1: 2474 | dependencies: 2475 | acorn: 8.14.0 2476 | acorn-jsx: 5.3.2(acorn@8.14.0) 2477 | eslint-visitor-keys: 3.4.3 2478 | 2479 | esquery@1.6.0: 2480 | dependencies: 2481 | estraverse: 5.3.0 2482 | 2483 | esrecurse@4.3.0: 2484 | dependencies: 2485 | estraverse: 5.3.0 2486 | 2487 | estraverse@5.3.0: {} 2488 | 2489 | esutils@2.0.3: {} 2490 | 2491 | eventemitter3@5.0.1: {} 2492 | 2493 | execa@7.2.0: 2494 | dependencies: 2495 | cross-spawn: 7.0.6 2496 | get-stream: 6.0.1 2497 | human-signals: 4.3.1 2498 | is-stream: 3.0.0 2499 | merge-stream: 2.0.0 2500 | npm-run-path: 5.3.0 2501 | onetime: 6.0.0 2502 | signal-exit: 3.0.7 2503 | strip-final-newline: 3.0.0 2504 | 2505 | fast-deep-equal@3.1.3: {} 2506 | 2507 | fast-json-stable-stringify@2.1.0: {} 2508 | 2509 | fast-levenshtein@2.0.6: {} 2510 | 2511 | fastq@1.17.1: 2512 | dependencies: 2513 | reusify: 1.0.4 2514 | 2515 | file-entry-cache@6.0.1: 2516 | dependencies: 2517 | flat-cache: 3.2.0 2518 | 2519 | file-saver@2.0.5: {} 2520 | 2521 | fill-range@7.1.1: 2522 | dependencies: 2523 | to-regex-range: 5.0.1 2524 | 2525 | find-up@5.0.0: 2526 | dependencies: 2527 | locate-path: 6.0.0 2528 | path-exists: 4.0.0 2529 | 2530 | flat-cache@3.2.0: 2531 | dependencies: 2532 | flatted: 3.3.2 2533 | keyv: 4.5.4 2534 | rimraf: 3.0.2 2535 | 2536 | flatted@3.3.2: {} 2537 | 2538 | for-each@0.3.3: 2539 | dependencies: 2540 | is-callable: 1.2.7 2541 | 2542 | fs.realpath@1.0.0: {} 2543 | 2544 | fsevents@2.3.3: 2545 | optional: true 2546 | 2547 | function-bind@1.1.2: {} 2548 | 2549 | function.prototype.name@1.1.7: 2550 | dependencies: 2551 | call-bind: 1.0.8 2552 | define-properties: 1.2.1 2553 | functions-have-names: 1.2.3 2554 | hasown: 2.0.2 2555 | is-callable: 1.2.7 2556 | 2557 | functions-have-names@1.2.3: {} 2558 | 2559 | gensync@1.0.0-beta.2: {} 2560 | 2561 | get-intrinsic@1.2.6: 2562 | dependencies: 2563 | call-bind-apply-helpers: 1.0.1 2564 | dunder-proto: 1.0.0 2565 | es-define-property: 1.0.1 2566 | es-errors: 1.3.0 2567 | es-object-atoms: 1.0.0 2568 | function-bind: 1.1.2 2569 | gopd: 1.2.0 2570 | has-symbols: 1.1.0 2571 | hasown: 2.0.2 2572 | math-intrinsics: 1.0.0 2573 | 2574 | get-stream@6.0.1: {} 2575 | 2576 | get-symbol-description@1.0.2: 2577 | dependencies: 2578 | call-bind: 1.0.8 2579 | es-errors: 1.3.0 2580 | get-intrinsic: 1.2.6 2581 | 2582 | github-buttons@2.29.1: {} 2583 | 2584 | glob-parent@6.0.2: 2585 | dependencies: 2586 | is-glob: 4.0.3 2587 | 2588 | glob@7.2.3: 2589 | dependencies: 2590 | fs.realpath: 1.0.0 2591 | inflight: 1.0.6 2592 | inherits: 2.0.4 2593 | minimatch: 3.1.2 2594 | once: 1.4.0 2595 | path-is-absolute: 1.0.1 2596 | 2597 | globals@11.12.0: {} 2598 | 2599 | globals@13.24.0: 2600 | dependencies: 2601 | type-fest: 0.20.2 2602 | 2603 | globalthis@1.0.4: 2604 | dependencies: 2605 | define-properties: 1.2.1 2606 | gopd: 1.2.0 2607 | 2608 | gopd@1.2.0: {} 2609 | 2610 | graphemer@1.4.0: {} 2611 | 2612 | has-bigints@1.0.2: {} 2613 | 2614 | has-flag@4.0.0: {} 2615 | 2616 | has-property-descriptors@1.0.2: 2617 | dependencies: 2618 | es-define-property: 1.0.1 2619 | 2620 | has-proto@1.2.0: 2621 | dependencies: 2622 | dunder-proto: 1.0.0 2623 | 2624 | has-symbols@1.1.0: {} 2625 | 2626 | has-tostringtag@1.0.2: 2627 | dependencies: 2628 | has-symbols: 1.1.0 2629 | 2630 | hasown@2.0.2: 2631 | dependencies: 2632 | function-bind: 1.1.2 2633 | 2634 | html2canvas@1.4.1: 2635 | dependencies: 2636 | css-line-break: 2.1.0 2637 | text-segmentation: 1.0.3 2638 | 2639 | human-signals@4.3.1: {} 2640 | 2641 | husky@8.0.3: {} 2642 | 2643 | ignore@5.3.2: {} 2644 | 2645 | import-fresh@3.3.0: 2646 | dependencies: 2647 | parent-module: 1.0.1 2648 | resolve-from: 4.0.0 2649 | 2650 | imurmurhash@0.1.4: {} 2651 | 2652 | inflight@1.0.6: 2653 | dependencies: 2654 | once: 1.4.0 2655 | wrappy: 1.0.2 2656 | 2657 | inherits@2.0.4: {} 2658 | 2659 | internal-slot@1.1.0: 2660 | dependencies: 2661 | es-errors: 1.3.0 2662 | hasown: 2.0.2 2663 | side-channel: 1.1.0 2664 | 2665 | is-array-buffer@3.0.4: 2666 | dependencies: 2667 | call-bind: 1.0.8 2668 | get-intrinsic: 1.2.6 2669 | 2670 | is-async-function@2.0.0: 2671 | dependencies: 2672 | has-tostringtag: 1.0.2 2673 | 2674 | is-bigint@1.1.0: 2675 | dependencies: 2676 | has-bigints: 1.0.2 2677 | 2678 | is-boolean-object@1.2.1: 2679 | dependencies: 2680 | call-bound: 1.0.2 2681 | has-tostringtag: 1.0.2 2682 | 2683 | is-callable@1.2.7: {} 2684 | 2685 | is-core-module@2.16.0: 2686 | dependencies: 2687 | hasown: 2.0.2 2688 | 2689 | is-data-view@1.0.2: 2690 | dependencies: 2691 | call-bound: 1.0.2 2692 | get-intrinsic: 1.2.6 2693 | is-typed-array: 1.1.13 2694 | 2695 | is-date-object@1.1.0: 2696 | dependencies: 2697 | call-bound: 1.0.2 2698 | has-tostringtag: 1.0.2 2699 | 2700 | is-extglob@2.1.1: {} 2701 | 2702 | is-finalizationregistry@1.1.0: 2703 | dependencies: 2704 | call-bind: 1.0.8 2705 | 2706 | is-fullwidth-code-point@4.0.0: {} 2707 | 2708 | is-generator-function@1.0.10: 2709 | dependencies: 2710 | has-tostringtag: 1.0.2 2711 | 2712 | is-glob@4.0.3: 2713 | dependencies: 2714 | is-extglob: 2.1.1 2715 | 2716 | is-map@2.0.3: {} 2717 | 2718 | is-negative-zero@2.0.3: {} 2719 | 2720 | is-number-object@1.1.0: 2721 | dependencies: 2722 | call-bind: 1.0.8 2723 | has-tostringtag: 1.0.2 2724 | 2725 | is-number@7.0.0: {} 2726 | 2727 | is-path-inside@3.0.3: {} 2728 | 2729 | is-regex@1.2.1: 2730 | dependencies: 2731 | call-bound: 1.0.2 2732 | gopd: 1.2.0 2733 | has-tostringtag: 1.0.2 2734 | hasown: 2.0.2 2735 | 2736 | is-set@2.0.3: {} 2737 | 2738 | is-shared-array-buffer@1.0.3: 2739 | dependencies: 2740 | call-bind: 1.0.8 2741 | 2742 | is-stream@3.0.0: {} 2743 | 2744 | is-string@1.1.0: 2745 | dependencies: 2746 | call-bind: 1.0.8 2747 | has-tostringtag: 1.0.2 2748 | 2749 | is-symbol@1.1.1: 2750 | dependencies: 2751 | call-bound: 1.0.2 2752 | has-symbols: 1.1.0 2753 | safe-regex-test: 1.1.0 2754 | 2755 | is-typed-array@1.1.13: 2756 | dependencies: 2757 | which-typed-array: 1.1.16 2758 | 2759 | is-weakmap@2.0.2: {} 2760 | 2761 | is-weakref@1.1.0: 2762 | dependencies: 2763 | call-bound: 1.0.2 2764 | 2765 | is-weakset@2.0.3: 2766 | dependencies: 2767 | call-bind: 1.0.8 2768 | get-intrinsic: 1.2.6 2769 | 2770 | isarray@2.0.5: {} 2771 | 2772 | isexe@2.0.0: {} 2773 | 2774 | iterator.prototype@1.1.4: 2775 | dependencies: 2776 | define-data-property: 1.1.4 2777 | es-object-atoms: 1.0.0 2778 | get-intrinsic: 1.2.6 2779 | has-symbols: 1.1.0 2780 | reflect.getprototypeof: 1.0.8 2781 | set-function-name: 2.0.2 2782 | 2783 | js-tokens@4.0.0: {} 2784 | 2785 | js-yaml@4.1.0: 2786 | dependencies: 2787 | argparse: 2.0.1 2788 | 2789 | jsesc@3.1.0: {} 2790 | 2791 | json-buffer@3.0.1: {} 2792 | 2793 | json-schema-traverse@0.4.1: {} 2794 | 2795 | json-stable-stringify-without-jsonify@1.0.1: {} 2796 | 2797 | json5@2.2.3: {} 2798 | 2799 | jsx-ast-utils@3.3.5: 2800 | dependencies: 2801 | array-includes: 3.1.8 2802 | array.prototype.flat: 1.3.3 2803 | object.assign: 4.1.5 2804 | object.values: 1.2.0 2805 | 2806 | keyv@4.5.4: 2807 | dependencies: 2808 | json-buffer: 3.0.1 2809 | 2810 | levn@0.4.1: 2811 | dependencies: 2812 | prelude-ls: 1.2.1 2813 | type-check: 0.4.0 2814 | 2815 | lilconfig@2.1.0: {} 2816 | 2817 | lint-staged@13.3.0: 2818 | dependencies: 2819 | chalk: 5.3.0 2820 | commander: 11.0.0 2821 | debug: 4.3.4 2822 | execa: 7.2.0 2823 | lilconfig: 2.1.0 2824 | listr2: 6.6.1 2825 | micromatch: 4.0.5 2826 | pidtree: 0.6.0 2827 | string-argv: 0.3.2 2828 | yaml: 2.3.1 2829 | transitivePeerDependencies: 2830 | - enquirer 2831 | - supports-color 2832 | 2833 | listr2@6.6.1: 2834 | dependencies: 2835 | cli-truncate: 3.1.0 2836 | colorette: 2.0.20 2837 | eventemitter3: 5.0.1 2838 | log-update: 5.0.1 2839 | rfdc: 1.4.1 2840 | wrap-ansi: 8.1.0 2841 | 2842 | locate-path@6.0.0: 2843 | dependencies: 2844 | p-locate: 5.0.0 2845 | 2846 | lodash.merge@4.6.2: {} 2847 | 2848 | log-update@5.0.1: 2849 | dependencies: 2850 | ansi-escapes: 5.0.0 2851 | cli-cursor: 4.0.0 2852 | slice-ansi: 5.0.0 2853 | strip-ansi: 7.1.0 2854 | wrap-ansi: 8.1.0 2855 | 2856 | loose-envify@1.4.0: 2857 | dependencies: 2858 | js-tokens: 4.0.0 2859 | 2860 | lru-cache@5.1.1: 2861 | dependencies: 2862 | yallist: 3.1.1 2863 | 2864 | math-intrinsics@1.0.0: {} 2865 | 2866 | merge-stream@2.0.0: {} 2867 | 2868 | micromatch@4.0.5: 2869 | dependencies: 2870 | braces: 3.0.3 2871 | picomatch: 2.3.1 2872 | 2873 | mimic-fn@2.1.0: {} 2874 | 2875 | mimic-fn@4.0.0: {} 2876 | 2877 | minimatch@3.1.2: 2878 | dependencies: 2879 | brace-expansion: 1.1.11 2880 | 2881 | ms@2.1.2: {} 2882 | 2883 | ms@2.1.3: {} 2884 | 2885 | nanoid@3.3.8: {} 2886 | 2887 | natural-compare@1.4.0: {} 2888 | 2889 | node-releases@2.0.19: {} 2890 | 2891 | npm-run-path@5.3.0: 2892 | dependencies: 2893 | path-key: 4.0.0 2894 | 2895 | object-assign@4.1.1: {} 2896 | 2897 | object-inspect@1.13.3: {} 2898 | 2899 | object-keys@1.1.1: {} 2900 | 2901 | object.assign@4.1.5: 2902 | dependencies: 2903 | call-bind: 1.0.8 2904 | define-properties: 1.2.1 2905 | has-symbols: 1.1.0 2906 | object-keys: 1.1.1 2907 | 2908 | object.entries@1.1.8: 2909 | dependencies: 2910 | call-bind: 1.0.8 2911 | define-properties: 1.2.1 2912 | es-object-atoms: 1.0.0 2913 | 2914 | object.fromentries@2.0.8: 2915 | dependencies: 2916 | call-bind: 1.0.8 2917 | define-properties: 1.2.1 2918 | es-abstract: 1.23.5 2919 | es-object-atoms: 1.0.0 2920 | 2921 | object.values@1.2.0: 2922 | dependencies: 2923 | call-bind: 1.0.8 2924 | define-properties: 1.2.1 2925 | es-object-atoms: 1.0.0 2926 | 2927 | once@1.4.0: 2928 | dependencies: 2929 | wrappy: 1.0.2 2930 | 2931 | onetime@5.1.2: 2932 | dependencies: 2933 | mimic-fn: 2.1.0 2934 | 2935 | onetime@6.0.0: 2936 | dependencies: 2937 | mimic-fn: 4.0.0 2938 | 2939 | optionator@0.9.4: 2940 | dependencies: 2941 | deep-is: 0.1.4 2942 | fast-levenshtein: 2.0.6 2943 | levn: 0.4.1 2944 | prelude-ls: 1.2.1 2945 | type-check: 0.4.0 2946 | word-wrap: 1.2.5 2947 | 2948 | p-limit@3.1.0: 2949 | dependencies: 2950 | yocto-queue: 0.1.0 2951 | 2952 | p-locate@5.0.0: 2953 | dependencies: 2954 | p-limit: 3.1.0 2955 | 2956 | parent-module@1.0.1: 2957 | dependencies: 2958 | callsites: 3.1.0 2959 | 2960 | path-exists@4.0.0: {} 2961 | 2962 | path-is-absolute@1.0.1: {} 2963 | 2964 | path-key@3.1.1: {} 2965 | 2966 | path-key@4.0.0: {} 2967 | 2968 | path-parse@1.0.7: {} 2969 | 2970 | picocolors@1.1.1: {} 2971 | 2972 | picomatch@2.3.1: {} 2973 | 2974 | pidtree@0.6.0: {} 2975 | 2976 | possible-typed-array-names@1.0.0: {} 2977 | 2978 | postcss-value-parser@4.2.0: {} 2979 | 2980 | postcss@8.4.38: 2981 | dependencies: 2982 | nanoid: 3.3.8 2983 | picocolors: 1.1.1 2984 | source-map-js: 1.2.1 2985 | 2986 | postcss@8.4.49: 2987 | dependencies: 2988 | nanoid: 3.3.8 2989 | picocolors: 1.1.1 2990 | source-map-js: 1.2.1 2991 | 2992 | prelude-ls@1.2.1: {} 2993 | 2994 | prettier@2.8.8: {} 2995 | 2996 | prop-types@15.8.1: 2997 | dependencies: 2998 | loose-envify: 1.4.0 2999 | object-assign: 4.1.1 3000 | react-is: 16.13.1 3001 | 3002 | punycode@2.3.1: {} 3003 | 3004 | qrcode.react@4.2.0(react@19.0.0): 3005 | dependencies: 3006 | react: 19.0.0 3007 | 3008 | queue-microtask@1.2.3: {} 3009 | 3010 | react-dom@19.0.0(react@19.0.0): 3011 | dependencies: 3012 | react: 19.0.0 3013 | scheduler: 0.25.0 3014 | 3015 | react-github-btn@1.4.0(react@19.0.0): 3016 | dependencies: 3017 | github-buttons: 2.29.1 3018 | react: 19.0.0 3019 | 3020 | react-icons@5.4.0(react@19.0.0): 3021 | dependencies: 3022 | react: 19.0.0 3023 | 3024 | react-is@16.13.1: {} 3025 | 3026 | react-refresh@0.14.2: {} 3027 | 3028 | react@19.0.0: {} 3029 | 3030 | reflect.getprototypeof@1.0.8: 3031 | dependencies: 3032 | call-bind: 1.0.8 3033 | define-properties: 1.2.1 3034 | dunder-proto: 1.0.0 3035 | es-abstract: 1.23.5 3036 | es-errors: 1.3.0 3037 | get-intrinsic: 1.2.6 3038 | gopd: 1.2.0 3039 | which-builtin-type: 1.2.1 3040 | 3041 | regexp.prototype.flags@1.5.3: 3042 | dependencies: 3043 | call-bind: 1.0.8 3044 | define-properties: 1.2.1 3045 | es-errors: 1.3.0 3046 | set-function-name: 2.0.2 3047 | 3048 | resolve-from@4.0.0: {} 3049 | 3050 | resolve@2.0.0-next.5: 3051 | dependencies: 3052 | is-core-module: 2.16.0 3053 | path-parse: 1.0.7 3054 | supports-preserve-symlinks-flag: 1.0.0 3055 | 3056 | restore-cursor@4.0.0: 3057 | dependencies: 3058 | onetime: 5.1.2 3059 | signal-exit: 3.0.7 3060 | 3061 | reusify@1.0.4: {} 3062 | 3063 | rfdc@1.4.1: {} 3064 | 3065 | rimraf@3.0.2: 3066 | dependencies: 3067 | glob: 7.2.3 3068 | 3069 | rollup@4.28.1: 3070 | dependencies: 3071 | '@types/estree': 1.0.6 3072 | optionalDependencies: 3073 | '@rollup/rollup-android-arm-eabi': 4.28.1 3074 | '@rollup/rollup-android-arm64': 4.28.1 3075 | '@rollup/rollup-darwin-arm64': 4.28.1 3076 | '@rollup/rollup-darwin-x64': 4.28.1 3077 | '@rollup/rollup-freebsd-arm64': 4.28.1 3078 | '@rollup/rollup-freebsd-x64': 4.28.1 3079 | '@rollup/rollup-linux-arm-gnueabihf': 4.28.1 3080 | '@rollup/rollup-linux-arm-musleabihf': 4.28.1 3081 | '@rollup/rollup-linux-arm64-gnu': 4.28.1 3082 | '@rollup/rollup-linux-arm64-musl': 4.28.1 3083 | '@rollup/rollup-linux-loongarch64-gnu': 4.28.1 3084 | '@rollup/rollup-linux-powerpc64le-gnu': 4.28.1 3085 | '@rollup/rollup-linux-riscv64-gnu': 4.28.1 3086 | '@rollup/rollup-linux-s390x-gnu': 4.28.1 3087 | '@rollup/rollup-linux-x64-gnu': 4.28.1 3088 | '@rollup/rollup-linux-x64-musl': 4.28.1 3089 | '@rollup/rollup-win32-arm64-msvc': 4.28.1 3090 | '@rollup/rollup-win32-ia32-msvc': 4.28.1 3091 | '@rollup/rollup-win32-x64-msvc': 4.28.1 3092 | fsevents: 2.3.3 3093 | 3094 | run-parallel@1.2.0: 3095 | dependencies: 3096 | queue-microtask: 1.2.3 3097 | 3098 | safe-array-concat@1.1.3: 3099 | dependencies: 3100 | call-bind: 1.0.8 3101 | call-bound: 1.0.2 3102 | get-intrinsic: 1.2.6 3103 | has-symbols: 1.1.0 3104 | isarray: 2.0.5 3105 | 3106 | safe-regex-test@1.1.0: 3107 | dependencies: 3108 | call-bound: 1.0.2 3109 | es-errors: 1.3.0 3110 | is-regex: 1.2.1 3111 | 3112 | scheduler@0.25.0: {} 3113 | 3114 | semver@6.3.1: {} 3115 | 3116 | set-function-length@1.2.2: 3117 | dependencies: 3118 | define-data-property: 1.1.4 3119 | es-errors: 1.3.0 3120 | function-bind: 1.1.2 3121 | get-intrinsic: 1.2.6 3122 | gopd: 1.2.0 3123 | has-property-descriptors: 1.0.2 3124 | 3125 | set-function-name@2.0.2: 3126 | dependencies: 3127 | define-data-property: 1.1.4 3128 | es-errors: 1.3.0 3129 | functions-have-names: 1.2.3 3130 | has-property-descriptors: 1.0.2 3131 | 3132 | shallowequal@1.1.0: {} 3133 | 3134 | shebang-command@2.0.0: 3135 | dependencies: 3136 | shebang-regex: 3.0.0 3137 | 3138 | shebang-regex@3.0.0: {} 3139 | 3140 | side-channel-list@1.0.0: 3141 | dependencies: 3142 | es-errors: 1.3.0 3143 | object-inspect: 1.13.3 3144 | 3145 | side-channel-map@1.0.1: 3146 | dependencies: 3147 | call-bound: 1.0.2 3148 | es-errors: 1.3.0 3149 | get-intrinsic: 1.2.6 3150 | object-inspect: 1.13.3 3151 | 3152 | side-channel-weakmap@1.0.2: 3153 | dependencies: 3154 | call-bound: 1.0.2 3155 | es-errors: 1.3.0 3156 | get-intrinsic: 1.2.6 3157 | object-inspect: 1.13.3 3158 | side-channel-map: 1.0.1 3159 | 3160 | side-channel@1.1.0: 3161 | dependencies: 3162 | es-errors: 1.3.0 3163 | object-inspect: 1.13.3 3164 | side-channel-list: 1.0.0 3165 | side-channel-map: 1.0.1 3166 | side-channel-weakmap: 1.0.2 3167 | 3168 | signal-exit@3.0.7: {} 3169 | 3170 | slice-ansi@5.0.0: 3171 | dependencies: 3172 | ansi-styles: 6.2.1 3173 | is-fullwidth-code-point: 4.0.0 3174 | 3175 | source-map-js@1.2.1: {} 3176 | 3177 | string-argv@0.3.2: {} 3178 | 3179 | string-width@5.1.2: 3180 | dependencies: 3181 | eastasianwidth: 0.2.0 3182 | emoji-regex: 9.2.2 3183 | strip-ansi: 7.1.0 3184 | 3185 | string.prototype.matchall@4.0.11: 3186 | dependencies: 3187 | call-bind: 1.0.8 3188 | define-properties: 1.2.1 3189 | es-abstract: 1.23.5 3190 | es-errors: 1.3.0 3191 | es-object-atoms: 1.0.0 3192 | get-intrinsic: 1.2.6 3193 | gopd: 1.2.0 3194 | has-symbols: 1.1.0 3195 | internal-slot: 1.1.0 3196 | regexp.prototype.flags: 1.5.3 3197 | set-function-name: 2.0.2 3198 | side-channel: 1.1.0 3199 | 3200 | string.prototype.repeat@1.0.0: 3201 | dependencies: 3202 | define-properties: 1.2.1 3203 | es-abstract: 1.23.5 3204 | 3205 | string.prototype.trim@1.2.10: 3206 | dependencies: 3207 | call-bind: 1.0.8 3208 | call-bound: 1.0.2 3209 | define-data-property: 1.1.4 3210 | define-properties: 1.2.1 3211 | es-abstract: 1.23.5 3212 | es-object-atoms: 1.0.0 3213 | has-property-descriptors: 1.0.2 3214 | 3215 | string.prototype.trimend@1.0.9: 3216 | dependencies: 3217 | call-bind: 1.0.8 3218 | call-bound: 1.0.2 3219 | define-properties: 1.2.1 3220 | es-object-atoms: 1.0.0 3221 | 3222 | string.prototype.trimstart@1.0.8: 3223 | dependencies: 3224 | call-bind: 1.0.8 3225 | define-properties: 1.2.1 3226 | es-object-atoms: 1.0.0 3227 | 3228 | strip-ansi@6.0.1: 3229 | dependencies: 3230 | ansi-regex: 5.0.1 3231 | 3232 | strip-ansi@7.1.0: 3233 | dependencies: 3234 | ansi-regex: 6.1.0 3235 | 3236 | strip-final-newline@3.0.0: {} 3237 | 3238 | strip-json-comments@3.1.1: {} 3239 | 3240 | styled-components@6.1.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0): 3241 | dependencies: 3242 | '@emotion/is-prop-valid': 1.2.2 3243 | '@emotion/unitless': 0.8.1 3244 | '@types/stylis': 4.2.5 3245 | css-to-react-native: 3.2.0 3246 | csstype: 3.1.3 3247 | postcss: 8.4.38 3248 | react: 19.0.0 3249 | react-dom: 19.0.0(react@19.0.0) 3250 | shallowequal: 1.1.0 3251 | stylis: 4.3.2 3252 | tslib: 2.6.2 3253 | 3254 | styled-reset@4.5.2(styled-components@6.1.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0)): 3255 | dependencies: 3256 | styled-components: 6.1.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 3257 | 3258 | stylis@4.3.2: {} 3259 | 3260 | supports-color@7.2.0: 3261 | dependencies: 3262 | has-flag: 4.0.0 3263 | 3264 | supports-preserve-symlinks-flag@1.0.0: {} 3265 | 3266 | text-segmentation@1.0.3: 3267 | dependencies: 3268 | utrie: 1.0.2 3269 | 3270 | text-table@0.2.0: {} 3271 | 3272 | to-regex-range@5.0.1: 3273 | dependencies: 3274 | is-number: 7.0.0 3275 | 3276 | tslib@2.6.2: {} 3277 | 3278 | type-check@0.4.0: 3279 | dependencies: 3280 | prelude-ls: 1.2.1 3281 | 3282 | type-fest@0.20.2: {} 3283 | 3284 | type-fest@1.4.0: {} 3285 | 3286 | typed-array-buffer@1.0.2: 3287 | dependencies: 3288 | call-bind: 1.0.8 3289 | es-errors: 1.3.0 3290 | is-typed-array: 1.1.13 3291 | 3292 | typed-array-byte-length@1.0.1: 3293 | dependencies: 3294 | call-bind: 1.0.8 3295 | for-each: 0.3.3 3296 | gopd: 1.2.0 3297 | has-proto: 1.2.0 3298 | is-typed-array: 1.1.13 3299 | 3300 | typed-array-byte-offset@1.0.3: 3301 | dependencies: 3302 | available-typed-arrays: 1.0.7 3303 | call-bind: 1.0.8 3304 | for-each: 0.3.3 3305 | gopd: 1.2.0 3306 | has-proto: 1.2.0 3307 | is-typed-array: 1.1.13 3308 | reflect.getprototypeof: 1.0.8 3309 | 3310 | typed-array-length@1.0.7: 3311 | dependencies: 3312 | call-bind: 1.0.8 3313 | for-each: 0.3.3 3314 | gopd: 1.2.0 3315 | is-typed-array: 1.1.13 3316 | possible-typed-array-names: 1.0.0 3317 | reflect.getprototypeof: 1.0.8 3318 | 3319 | unbox-primitive@1.0.2: 3320 | dependencies: 3321 | call-bind: 1.0.8 3322 | has-bigints: 1.0.2 3323 | has-symbols: 1.1.0 3324 | which-boxed-primitive: 1.1.0 3325 | 3326 | update-browserslist-db@1.1.1(browserslist@4.24.3): 3327 | dependencies: 3328 | browserslist: 4.24.3 3329 | escalade: 3.2.0 3330 | picocolors: 1.1.1 3331 | 3332 | uri-js@4.4.1: 3333 | dependencies: 3334 | punycode: 2.3.1 3335 | 3336 | utrie@1.0.2: 3337 | dependencies: 3338 | base64-arraybuffer: 1.0.2 3339 | 3340 | vite@6.0.3: 3341 | dependencies: 3342 | esbuild: 0.24.0 3343 | postcss: 8.4.49 3344 | rollup: 4.28.1 3345 | optionalDependencies: 3346 | fsevents: 2.3.3 3347 | 3348 | which-boxed-primitive@1.1.0: 3349 | dependencies: 3350 | is-bigint: 1.1.0 3351 | is-boolean-object: 1.2.1 3352 | is-number-object: 1.1.0 3353 | is-string: 1.1.0 3354 | is-symbol: 1.1.1 3355 | 3356 | which-builtin-type@1.2.1: 3357 | dependencies: 3358 | call-bound: 1.0.2 3359 | function.prototype.name: 1.1.7 3360 | has-tostringtag: 1.0.2 3361 | is-async-function: 2.0.0 3362 | is-date-object: 1.1.0 3363 | is-finalizationregistry: 1.1.0 3364 | is-generator-function: 1.0.10 3365 | is-regex: 1.2.1 3366 | is-weakref: 1.1.0 3367 | isarray: 2.0.5 3368 | which-boxed-primitive: 1.1.0 3369 | which-collection: 1.0.2 3370 | which-typed-array: 1.1.16 3371 | 3372 | which-collection@1.0.2: 3373 | dependencies: 3374 | is-map: 2.0.3 3375 | is-set: 2.0.3 3376 | is-weakmap: 2.0.2 3377 | is-weakset: 2.0.3 3378 | 3379 | which-typed-array@1.1.16: 3380 | dependencies: 3381 | available-typed-arrays: 1.0.7 3382 | call-bind: 1.0.8 3383 | for-each: 0.3.3 3384 | gopd: 1.2.0 3385 | has-tostringtag: 1.0.2 3386 | 3387 | which@2.0.2: 3388 | dependencies: 3389 | isexe: 2.0.0 3390 | 3391 | word-wrap@1.2.5: {} 3392 | 3393 | wrap-ansi@8.1.0: 3394 | dependencies: 3395 | ansi-styles: 6.2.1 3396 | string-width: 5.1.2 3397 | strip-ansi: 7.1.0 3398 | 3399 | wrappy@1.0.2: {} 3400 | 3401 | yallist@3.1.1: {} 3402 | 3403 | yaml@2.3.1: {} 3404 | 3405 | yocto-queue@0.1.0: {} 3406 | -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/apple-launch-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/apple-launch-image.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #da532c 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/favicon.ico -------------------------------------------------------------------------------- /public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/mstile-150x150.png -------------------------------------------------------------------------------- /public/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Honey", 3 | "short_name": "Honey", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /public/splash/ipad_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/splash/ipad_splash.png -------------------------------------------------------------------------------- /public/splash/ipadpro1_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/splash/ipadpro1_splash.png -------------------------------------------------------------------------------- /public/splash/ipadpro2_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/splash/ipadpro2_splash.png -------------------------------------------------------------------------------- /public/splash/ipadpro3_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/splash/ipadpro3_splash.png -------------------------------------------------------------------------------- /public/splash/iphone5_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/splash/iphone5_splash.png -------------------------------------------------------------------------------- /public/splash/iphone6_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/splash/iphone6_splash.png -------------------------------------------------------------------------------- /public/splash/iphoneplus_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/splash/iphoneplus_splash.png -------------------------------------------------------------------------------- /public/splash/iphonex_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/splash/iphonex_splash.png -------------------------------------------------------------------------------- /public/splash/iphonexr_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/splash/iphonexr_splash.png -------------------------------------------------------------------------------- /public/splash/iphonexsmax_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/public/splash/iphonexsmax_splash.png -------------------------------------------------------------------------------- /src/App.jsx: -------------------------------------------------------------------------------- 1 | import { lazy, Suspense, useEffect, useState } from 'react'; 2 | import styled from 'styled-components'; 3 | 4 | import { getQueryValue } from './utils'; 5 | import Loading from './components/Loading'; 6 | import Words from './assets/words'; 7 | 8 | // const Card = lazy(() => import('./components/Card')); 9 | const Card = lazy(() => import('./components/Card')); 10 | const LoadingWords = lazy(() => import('./components/LoadingWords')); 11 | const StartButton = lazy(() => import('./components/StartButton')); 12 | const RefreshButton = lazy(() => import('./components/RefreshButton')); 13 | const SaveButton = lazy(() => import('./components/SaveButton')); 14 | const ShareQR = lazy(() => import('./components/ShareQR')); 15 | const Header = lazy(() => import('./components/Header')); 16 | 17 | const InfoModal = lazy(() => import('./components/InfoModal')); 18 | const MetooButton = styled(StartButton)` 19 | z-index: 998; 20 | position: fixed; 21 | bottom: 0.6rem; 22 | left: 50%; 23 | width: 14rem; 24 | margin-left: -7rem; 25 | animation-delay: ${({ wordCount }) => `${wordCount * 0.3}s`}; 26 | `; 27 | const wordsIdx = getQueryValue('idx'); 28 | const hasWords = wordsIdx !== ''; 29 | const App = () => { 30 | let count = wordsIdx !== '' ? Words[wordsIdx].length : 0; 31 | 32 | const [start, setStart] = useState(hasWords); 33 | const [loading, setLoading] = useState(!hasWords); 34 | const handleStart = () => { 35 | setStart(true); 36 | setLoading(true); 37 | }; 38 | const handleDone = () => { 39 | setLoading(false); 40 | }; 41 | const handleUpdate = () => { 42 | setLoading(true); 43 | }; 44 | 45 | return ( 46 | }> 47 | {!hasWords && } 48 | {start && !loading && !hasWords && } 49 | 50 | 51 | {!start &&
} 52 | 53 | 54 | {start && !loading && hasWords && ( 55 | { 58 | location.href = location.href.split('?')[0]; 59 | }} 60 | > 61 | 我也要生成 62 | 63 | )} 64 | 65 | ); 66 | }; 67 | export default App; 68 | -------------------------------------------------------------------------------- /src/Global.style.js: -------------------------------------------------------------------------------- 1 | import { createGlobalStyle } from 'styled-components'; 2 | import reset from 'styled-reset'; 3 | import ImageBg from './assets/img/bg.love.jpg'; 4 | const GlobalStyle = createGlobalStyle` 5 | ${reset} 6 | *{ 7 | box-sizing:border-box; 8 | outline:none; 9 | -webkit-text-size-adjust: none; 10 | -webkit-tap-highlight-color: rgba(0,0,0,0); 11 | color:#ffffeb; 12 | } 13 | html{ 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | font-family:"Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei"; 17 | } 18 | body{ 19 | -webkit-overflow-scrolling: touch; 20 | overflow:scroll; 21 | margin:0 auto; 22 | min-height:100vh; 23 | position: relative; 24 | } 25 | #root{ 26 | min-height:100vh; 27 | background-image:url(${ImageBg}); 28 | background-size: cover; 29 | background-repeat: no-repeat; 30 | background-position: center; 31 | } 32 | .hidden{ 33 | visibility:hidden; 34 | } 35 | .visibile{ 36 | visibility:visible; 37 | } 38 | @media screen and (min-width: 320px){ 39 | html { 40 | font-size: 12px; 41 | } 42 | } 43 | @media screen and (min-width: 375px){ 44 | html { 45 | font-size: 14px; 46 | } 47 | } 48 | @media screen and (min-width: 480px){ 49 | html { 50 | font-size: 20px; 51 | } 52 | } 53 | @media screen and (min-width: 768px){ 54 | html { 55 | font-size: 24px; 56 | } 57 | } 58 | `; 59 | 60 | export default GlobalStyle; 61 | -------------------------------------------------------------------------------- /src/assets/img/bg.love.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/src/assets/img/bg.love.jpg -------------------------------------------------------------------------------- /src/assets/img/birds.bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/src/assets/img/birds.bg.png -------------------------------------------------------------------------------- /src/assets/img/heart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/src/assets/img/logo.png -------------------------------------------------------------------------------- /src/assets/img/lover.bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/src/assets/img/lover.bg.png -------------------------------------------------------------------------------- /src/assets/img/noise.bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/src/assets/img/noise.bg.png -------------------------------------------------------------------------------- /src/assets/img/reward.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zerosoul/honeyed-words-generator/34537a730a59c8b453735f6b4111390003018ab0/src/assets/img/reward.jpg -------------------------------------------------------------------------------- /src/assets/words.json: -------------------------------------------------------------------------------- 1 | [ 2 | "有趣的地方都想去​|比如你的世界", 3 | "我想在你那里买一块地 | 买什么地?|买你的死心塌地", 4 | "你知道你和星星有什么区别吗?|星星在天上 | 而你在我心里", 5 | "我十拿九稳 | 就只差你一吻了", 6 | "可爱不是长久之计 | 可爱我是", 7 | "小猪佩奇 | 你配我", 8 | "有谣言说我喜欢你 | 我澄清一下 | 那不是谣言", 9 | "只许州官放火 | 不许…|不许你离开我", 10 | "你昨天晚上应该很累吧 | 因为你在我梦里一直跑个不停", 11 | "我觉得你接近我就是在害我 | 害得我好喜欢你呀", 12 | "你今天好奇怪 | 怪!可!爱!的!", 13 | "我觉得我好花心 | 你每天的样子我都好喜欢", 14 | "你有打火机嘛?|没有?|那你是如何点燃我的心的", 15 | "我说不清我为什么爱你 | 我只知道 | 只要有你 | 我就不可能爱上别人", 16 | "我喜欢你 | 像你妈打你 | 不讲道理", 17 | "知道你为什么这么冷吗?|因为你没有像我这么暖的对象在身边啊。", 18 | "无事献殷勤 | 非…|非常喜欢你", 19 | "子曰:三思而后行|1、2、3、|嗯~我喜欢你。", 20 | "小女子不才 | 掐指一算 | 公子今生缺我", 21 | "你有地图吗?|我在你的眼睛里迷路了。", 22 | "饭在锅里 | 我在床上", 23 | "你知道我最喜欢什么神吗?|是你的眼神", 24 | "你要是丑点 | 我或许可以带你逛街看电影吃西餐散步看星星看月亮 | 从诗词歌赋谈到人生哲学 | 可你长的那么好看,让我只想和你恋爱", 25 | "我房租到期了 | 可以去你心里住吗?", 26 | "要是我和你生一个孩子你觉得他会是什么座?|什么座?双子座?|不,我们的杰作。", 27 | "你可以笑一个吗?|为什么啊?|因为我的咖啡忘加糖了", 28 | "你想喝点什么?|我想呵护你。", 29 | "我觉得你长得像我一个亲戚|???|我妈的儿媳妇", 30 | "你知道情人眼里出什么吗?|西施?!|不,出现你。", 31 | "你最近是不是又胖了?|没有啊,为什么这么说?|那你为什么在我心里的分量越来越重了呢?", 32 | "落叶归根 | 你归我", 33 | "苦海无涯 | 回头是我", 34 | "不想撞南墙了 | 只想撞撞先生胸膛", 35 | "你上辈子一定是碳酸饮料吧 | 不然我怎么一看到你就开心地冒泡呢", 36 | "你会弹钢琴吗?|不会 | 那你是怎么撩动我的心弦的呢", 37 | "第一次见到你时 | 上帝在我耳旁说了几个字 | 在劫难逃", 38 | "你知道喝什么酒最容易醉吗?|是你的天长地久", 39 | "你属什么?|我属虎。|你不要再骗人了,你属于我。", 40 | "你是什么星座?双子座吗?|不是,我是为你量身定做。", 41 | "你知道我最大的缺点是什么吗?|是缺点你", 42 | "如果我把你推到花园里面 | 我就会找不到你 | 因为你像花儿一样美丽|", 43 | "有时候生活有些苦难 | 你不要去抱怨 | 抱我就好了", 44 | "我点的东西怎么还没来?|什么东西?|我们的未来。", 45 | "你的脸上有点东西 | 有什么?|有点漂亮", 46 | "我一点也不想你 | 一点半再想你", 47 | "你知道我的心在哪边么?|左边啊 | 不,在你那边", 48 | "我们来玩木头人不许动吧 | 好!我输了 | 为什么?|因为我心动了", 49 | "莫文蔚的阴天 | 孙燕姿的雨天 | 周杰伦的晴天 | 都不如你和我聊天", 50 | "我想你应该很忙 | 所以你看到前三个字就好了", 51 | "甜有 100 种方式 | 吃糖 | 蛋糕 | 还有 98 次想你", 52 | "你知道我喜欢吃什么吗?|不知道 | 我喜欢痴痴地望着你", 53 | "你猜一下我是什么星座?|不知道 | 我是什么都想为你做!", 54 | "你是什么血型?|A 型啊 | 不,你是我的理想型", 55 | "我知道有三个人喜欢你 | 谁呀 | 我呀!我呀!我呀!", 56 | "我刚发现我们有一个共同好友!|是谁?|丘比特!", 57 | "我和你没什么好谈的 | 除了谈恋爱", 58 | "不思进取 | 思你", 59 | "众生皆苦 | 你是草莓味!", 60 | "见什么世面 | 见见你就好了!", 61 | "好好照顾自己​​​​|不行就让我来照顾你", 62 | "眼里都是你 | 亿万星辰犹不及", 63 | "最近手头有点紧 | 想借你的手牵一牵", 64 | "人总是会变的 | 从一开始的喜欢你 | 到后来的更喜欢你", 65 | "一想到昨天的我也喜欢你 | 今天的我就吃醋了", 66 | "希望有一天 | 你来到这个城市 | 是因为想起了我", 67 | "你为什么要害我?|我害你?|害我这么喜欢你", 68 | "游乐园里有个可以骑在上面旋转的,那个叫旋转什么?|木马|Mua~", 69 | "你知道牛肉要怎么吃才好吃吗?|我喂你吃", 70 | "我觉得你这个人不适合谈恋爱 | 为什么?|你适合结婚", 71 | "一生无定 | 遇你之所 | 是为乡", 72 | "要不我们去喝酒吧 | 喝我们的喜酒", 73 | "你一定很孤独吧 | 因为你一直住在我心里", 74 | "你眼瞎吗 | 撞我心口上了", 75 | "遍地都是月光 | 可月亮就你一个", 76 | "你是哪里人 | 杭州人 | 不,你是我的心上人", 77 | "我还是喜欢你 | 像小时候吃辣条 | 不看日期", 78 | "“你能不能闭嘴” | “我没有说话啊” | “那为什么我满脑子都是你…”", 79 | "你闻到什么味道了吗?|没有啊 | 怎么你一出来空气都是甜的了", 80 | "我有罪!|什么?|我正在你的芳心纵火", 81 | "你是书吧?|越看越想睡", 82 | "海上月是天上月 | 眼前人是心上人", 83 | "我觉得你好像一款游戏 | 什么游戏?|我的世界", 84 | "我身体很好 | 可以扛米袋子,扛煤气罐 | 可就是扛不住想你", 85 | "你知道我最珍贵的是什么吗?|是上一句话的第一个字", 86 | "今天不是你死就是我死 | 你可爱死了 | 我爱死你了", 87 | "“洁白的婚纱,手捧着鲜花”这首歌歌名是什么?|咱们结婚吧 | 好啊!", 88 | "你可以帮我洗一个东西吗 | 洗什么?|喜欢我啊", 89 | "天气这么冷,你知道怎么取暖吗?|不知道 | 我也不知道,但我知道怎么娶你", 90 | "跟你说一个坏消息 | 什么坏消息?|我对你的思想已经不单纯了", 91 | "以后你的口红我包了 | 但记得每天还我一点点", 92 | "这是校服 | 这是迷彩服 | 你是我的小幸福", 93 | "我认为我是一个直男 | 为什么?|因为我一直爱着你", 94 | "今天和喜欢的人说了一句话 | 说了啥?|“今天和喜欢的人说了一句话”", 95 | "你的眼睛真好看,里面藏着山川湖海,日月星辰 | 我的眼睛更好看 | 里面藏着你", 96 | "既见君子,云胡不喜 | 明天生动而具体 | 有且仅有一个你", 97 | "月亮不会奔向你 | 但我会 | 不负万里的那种", 98 | "你摸摸我什么面料子 | 面料怎么了?|是不是做你男友的料子", 99 | "以后我只能称呼你为您了 | 因为,你在我心上", 100 | "我的手被划了一口子 | 你也划一下 | 这样我们就是两口子了", 101 | "土豆会变成土豆泥,猜猜我会变成什么呢?|不知道诶 | 我爱泥", 102 | "我想吃碗面 | 什么面?|你的心里面", 103 | "我对你的爱 | 就像拖拉机上山 | 轰轰烈烈", 104 | "你猜我坐飞机喜欢靠走道还是靠窗 | 靠窗?|不对,我喜欢靠着你", 105 | "地球和太阳都不是宇宙的中心 | 你才是", 106 | "我小时候想成为科学家,可现在不一样了 | 现在怎么了?|现在想和你成家", 107 | "我觉得我是一个单调的人 | 为什么?|因为我只喜欢你", 108 | "你猜我爱喝酒还是爱打游戏 | 爱打游戏吧?|不,爱你", 109 | "你好宅啊 | 没有啊 | 可你呆在我的心里就没动过", 110 | "你知道什么是重要吗?|就是你无论多重 | 我都要你!" 111 | ] -------------------------------------------------------------------------------- /src/components/Card.jsx: -------------------------------------------------------------------------------- 1 | import { useState, useEffect } from 'react'; 2 | import styled from 'styled-components'; 3 | import { QRCodeSVG } from 'qrcode.react'; 4 | 5 | import { getQueryValue, shuffle } from '../utils'; 6 | import ImageLogo from '../assets/img/logo.png'; 7 | import ImageLover from '../assets/img/lover.bg.png'; 8 | import ImageBirds from '../assets/img/birds.bg.png'; 9 | 10 | import { AniPopIn, AniFadeIn, AniSlideInDown } from './animates'; 11 | import StyledWordBox from './StyledWordBox'; 12 | import ImageHeart from '../assets/img/heart.svg'; 13 | import ImageNoise from '../assets/img/noise.bg.png'; 14 | 15 | const StyledWrapper = styled.section` 16 | z-index: 997; 17 | position: fixed; 18 | top: 0; 19 | left: 0; 20 | right: 0; 21 | bottom: 0; 22 | display: flex; 23 | flex-direction: column; 24 | align-items: center; 25 | justify-content: center; 26 | backface-visibility: hidden; 27 | 28 | &.visible .card { 29 | animation: ${AniSlideInDown} 0.5s; 30 | } 31 | .card { 32 | position: relative; 33 | padding: 1.8rem 2rem; 34 | background-color: rgba(108, 53, 44, 0.8); 35 | margin-top: -2rem; 36 | max-width: 94vw; 37 | box-shadow: 0 0 1rem #6c352c; 38 | animation-fill-mode: both; 39 | 40 | .dbg { 41 | visibility: hidden; 42 | position: absolute; 43 | &.qr { 44 | bottom: 0; 45 | right: 0.5rem; 46 | display: flex; 47 | flex-direction: column; 48 | align-items: center; 49 | .tip { 50 | font-size: 0.5rem; 51 | color: #222; 52 | padding: 0.2rem 0; 53 | } 54 | } 55 | &.lover { 56 | bottom: 0; 57 | left: 0; 58 | width: 4rem; 59 | opacity: 0.6; 60 | } 61 | &.birds { 62 | top: 0.4rem; 63 | right: 0; 64 | width: 5rem; 65 | opacity: 0.5; 66 | } 67 | } 68 | 69 | .heart { 70 | position: absolute; 71 | animation-fill-mode: both; 72 | animation: ${AniFadeIn} 3s ease infinite alternate; 73 | opacity: 0; 74 | &.heart1 { 75 | transform: rotate(20deg); 76 | bottom: 1rem; 77 | right: 1rem; 78 | width: 3rem; 79 | } 80 | &.heart2 { 81 | transform: rotate(-20deg); 82 | bottom: 1rem; 83 | left: -1rem; 84 | width: 1rem; 85 | } 86 | &.heart3 { 87 | transform: rotate(-30deg); 88 | top: 1rem; 89 | left: 1rem; 90 | width: 2rem; 91 | } 92 | &.heart4 { 93 | transform: rotate(40deg); 94 | top: 2rem; 95 | right: 1.2rem; 96 | width: 1.5rem; 97 | } 98 | &.heart5 { 99 | transform: rotate(-10deg); 100 | bottom: 2rem; 101 | left: 1.2rem; 102 | width: 1.8rem; 103 | } 104 | } 105 | &.starting { 106 | background-image: url(${ImageNoise}); 107 | background-repeat: repeat; 108 | box-shadow: none; 109 | animation: none; 110 | transform: none; 111 | .dbg { 112 | visibility: visible; 113 | &.qr { 114 | opacity: 0.8; 115 | } 116 | } 117 | .line .word { 118 | color: #222; 119 | text-shadow: none; 120 | } 121 | * { 122 | animation: none; 123 | } 124 | } 125 | &:after { 126 | content: ''; 127 | position: absolute; 128 | width: 100%; 129 | height: 0.8rem; 130 | border-radius: 50%; 131 | left: 0; 132 | bottom: -1rem; 133 | box-shadow: 0 30px 20px rgba(0, 0, 0, 0.2); 134 | } 135 | .line { 136 | margin-bottom: 1.4rem; 137 | display: flex; 138 | flex-wrap: wrap; 139 | font-size: 2rem; 140 | } 141 | } 142 | `; 143 | const WordBox = styled(StyledWordBox)` 144 | text-shadow: 0 0 3px rgba(2, 2, 2, 0.5); 145 | color: #f4b0f3; 146 | padding: 0.4rem; 147 | font-weight: 800; 148 | animation: ${AniPopIn} 1s ease forwards; 149 | animation-fill-mode: both; 150 | `; 151 | 152 | const wordsIdx = getQueryValue('idx'); 153 | let currWords = ''; 154 | 155 | let wordCount = 0; 156 | 157 | export default function Card({ wordArr = [], visible = false }) { 158 | const [words, setWords] = useState(''); 159 | 160 | useEffect(() => { 161 | if (visible && wordArr.length > 0) { 162 | if (wordsIdx) { 163 | currWords = wordArr[wordsIdx]; 164 | console.log({ currWords }); 165 | } 166 | const RandomWords = [...wordArr]; 167 | shuffle(RandomWords); 168 | let wordSeq = currWords === '' ? 1 : RandomWords.findIndex((w) => w === currWords) + 1; 169 | let newWords = RandomWords[(wordSeq - 1) % RandomWords.length]; 170 | console.log({ newWords }); 171 | 172 | setWords(newWords); 173 | wordCount = 0; 174 | // 全局变量 175 | window.CUR_WORDS_IDX = wordArr.findIndex((w) => w === newWords); 176 | console.log('from card CUR_WORDS_IDX', window.CUR_WORDS_IDX); 177 | 178 | return () => { 179 | wordSeq++; 180 | }; 181 | } 182 | }, [visible, wordArr]); 183 | 184 | return ( 185 | 186 |
187 | {words 188 | .replaceAll(' ', '') 189 | .split('|') 190 | .map((line, lineIdx) => { 191 | let ws = line.split(''); 192 | console.log({ ws }); 193 | 194 | if (lineIdx !== 0) { 195 | wordCount = wordCount + words.split('|')[lineIdx - 1].length; 196 | } 197 | return ( 198 |

199 | {ws.map((w, idx) => { 200 | return w !== '' ? ( 201 | 206 | {w} 207 | 208 | ) : null; 209 | })} 210 |

211 | ); 212 | })} 213 | {[1, 2, 3, 4, 5].map((num, idx) => ( 214 | heart 221 | ))} 222 |
223 | 232 |
土味情话
233 |
234 | lover 235 | birds 236 |
237 |
238 | ); 239 | } 240 | -------------------------------------------------------------------------------- /src/components/Header.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import styled from 'styled-components'; 3 | import StyledWordBox from './StyledWordBox'; 4 | import StartButton from './StartButton'; 5 | import { AniPopIn, AniFadeDown, AniFloat } from './animates'; 6 | 7 | import ImageLogo from '../assets/img/logo.png'; 8 | const Wrapper = styled.header` 9 | position: fixed; 10 | top: 0; 11 | left: 0; 12 | right: 0; 13 | bottom: 0; 14 | display: flex; 15 | flex-direction: column; 16 | align-items: center; 17 | justify-content: center; 18 | .logo { 19 | width: 6rem; 20 | margin-bottom: 3rem; 21 | animation-fill-mode: both; 22 | 23 | animation: ${AniFloat} 2s ease-in infinite alternate; 24 | } 25 | .title { 26 | display: flex; 27 | font-size: 4rem; 28 | font-weight: 800; 29 | text-shadow: 0 0 4px black; 30 | } 31 | `; 32 | const WordBox = styled(StyledWordBox)` 33 | position: relative; 34 | margin: 0 0.4rem; 35 | padding: 0.3rem; 36 | border: 1px solid pink; 37 | color: #f4b0f3; 38 | animation: ${AniPopIn} 1s ease forwards; 39 | animation-fill-mode: both; 40 | .pinyin { 41 | color: #f1ad93; 42 | font-size: 1.5rem; 43 | position: absolute; 44 | left: 50%; 45 | top: -2rem; 46 | transform: translateX(-50%); 47 | .w { 48 | font-family: monospace; 49 | text-transform: capitalize; 50 | animation: ${AniFadeDown} 1s; 51 | animation-fill-mode: both; 52 | } 53 | } 54 | `; 55 | 56 | const titleWords = [ 57 | { word: '甜', pinyin: 'tǔ' }, 58 | { word: '言', pinyin: 'wèi' }, 59 | { word: '蜜', pinyin: 'qíng' }, 60 | { word: '语', pinyin: 'huà' } 61 | ]; 62 | export default function Header({ handleStart }) { 63 | return ( 64 | 65 | logo 66 |
67 | {titleWords.map((obj, idx) => { 68 | return ( 69 | 70 | {obj.word} 71 | 72 | 73 | {obj.pinyin} 74 | 75 | 76 | 77 | ); 78 | })} 79 |
80 | 开始 81 |
82 | ); 83 | } 84 | -------------------------------------------------------------------------------- /src/components/InfoModal.jsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable react/jsx-no-target-blank */ 2 | import { useState } from 'react'; 3 | import styled from 'styled-components'; 4 | import GitHubButton from 'react-github-btn'; 5 | import StyledButton from './StyledButton'; 6 | import ImageReward from '../assets/img/reward.jpg'; 7 | import { AniSlideLeft } from './animates'; 8 | import { MdClose, MdInfo } from 'react-icons/md'; 9 | const InfoButton = styled(StyledButton)` 10 | position: fixed; 11 | right: 0.5rem; 12 | bottom: 0.5rem; 13 | margin-right: 0.5rem; 14 | padding: 5px; 15 | display: flex; 16 | align-items: center; 17 | justify-content: center; 18 | > svg { 19 | width: 28px; 20 | height: 28px; 21 | } 22 | `; 23 | const StyledModal = styled.section` 24 | z-index: 998; 25 | display: flex; 26 | flex-direction: column; 27 | box-shadow: 0 0 8px black; 28 | position: fixed; 29 | right: 0.5rem; 30 | bottom: 3rem; 31 | background: rgba(2, 2, 2, 0.6); 32 | padding: 1rem; 33 | padding: 1rem; 34 | &.visible { 35 | animation: ${AniSlideLeft} 1s; 36 | } 37 | .reward { 38 | width: 14rem; 39 | align-self: center; 40 | margin-bottom: 1.8rem; 41 | position: relative; 42 | img { 43 | width: 100%; 44 | border: 1px solid #222; 45 | } 46 | &:after { 47 | content: attr(title); 48 | display: block; 49 | position: absolute; 50 | left: 50%; 51 | transform: translateX(-50%); 52 | width: 100%; 53 | text-align: left; 54 | font-size: 0.8rem; 55 | bottom: -1rem; 56 | text-shadow: 0 0 8px #a09090; 57 | } 58 | } 59 | .line { 60 | display: flex; 61 | align-items: center; 62 | margin-bottom: 0.8rem; 63 | &.title { 64 | font-size: 1.4rem; 65 | font-weight: 800; 66 | } 67 | &.github > span { 68 | margin-right: 0.4rem; 69 | } 70 | } 71 | .copyright { 72 | font-size: 0.5rem; 73 | } 74 | `; 75 | const Modal = ({ visible = false }) => ( 76 | 77 |
土味情话在线生成器
78 |
79 | 87 | Star 88 | 89 | 97 | Fork 98 | 99 |
100 |
101 | reward 102 |
103 |
104 | Copyright © {new Date().getFullYear()} By 105 | 106 | Tristan 107 | 108 |
109 |
110 | ); 111 | export default function InfoModal() { 112 | const [visible, setVisible] = useState(false); 113 | const handleInfoClick = () => { 114 | setVisible((prev) => !prev); 115 | }; 116 | 117 | return ( 118 | <> 119 | 120 | 121 | 122 | {visible ? : } 123 | 124 | 125 | ); 126 | } 127 | -------------------------------------------------------------------------------- /src/components/Loading.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import styled, { keyframes } from 'styled-components'; 3 | const rotate = keyframes` 4 | 0% { 5 | transform: rotate(0deg); 6 | } 7 | 100%{ 8 | transform: rotate(-360deg); 9 | } 10 | `; 11 | 12 | const rotateBall = (props) => keyframes` 13 | ${(((props.size / 2 / props.countBalls) * (props.index - 1)) / props.size) * 100}% { 14 | opacity: 0; 15 | } 16 | ${(((props.size / 2 / props.countBalls + 0.0001) * (props.index - 1)) / props.size) * 100}% { 17 | opacity: 1; 18 | transform: ${`rotateZ(${0 - (360 / props.countBalls) * (props.index - 2)}deg)`}; 19 | } 20 | ${(((props.size / 2 / props.countBalls) * (props.index - 0) + 2) / props.size) * 100}% { 21 | transform: ${`rotateZ(${0 - (360 / props.countBalls) * (props.index - 1)}deg)`}; 22 | } 23 | ${ 24 | ((props.size / 2 + (props.size / 2 / props.countBalls) * (props.index - 0) + 2) / props.size) * 25 | 100 26 | }% { 27 | transform: ${`rotateZ(${0 - (360 / props.countBalls) * (props.index - 1)}deg)`}; 28 | } 29 | 100% { 30 | transform: ${`rotateZ(${0 - (360 / props.countBalls) * (props.countBalls - 1)}deg)`}; 31 | opacity: 1; 32 | } 33 | `; 34 | 35 | const getBalls = ({ 36 | countBalls, 37 | radius, 38 | angle, 39 | color = '#fff', 40 | size = 40, 41 | ballSize, 42 | sizeUnit = 'px' 43 | }) => { 44 | const balls = []; 45 | const offset = ballSize / 2; 46 | for (let i = 0; i < countBalls; i++) { 47 | const y = Math.sin(angle * i * (Math.PI / 180)) * radius - offset; 48 | const x = Math.cos(angle * i * (Math.PI / 180)) * radius - offset; 49 | balls.push( 50 | 61 | ); 62 | } 63 | return balls; 64 | }; 65 | 66 | const Wrapper = styled.div` 67 | position: relative; 68 | display: flex; 69 | justify-content: center; 70 | align-items: center; 71 | width: 100vw; 72 | height: 100vh; 73 | animation: ${rotate} 3s infinite ease-in; 74 | `; 75 | 76 | const Ball = styled.div` 77 | position: absolute; 78 | width: ${(props) => `${props.size}${props.sizeUnit}`}; 79 | height: ${(props) => `${props.size}${props.sizeUnit}`}; 80 | animation: ${rotateBall} 2s infinite linear; 81 | transform: ${(props) => `rotateZ(${(360 / props.countBalls) * props.index}deg)`}; 82 | opacity: 0; 83 | &:before { 84 | content: ''; 85 | position: absolute; 86 | left: 50%; 87 | top: 0%; 88 | width: ${(props) => `${props.ballSize}${props.sizeUnit}`}; 89 | height: ${(props) => `${props.ballSize}${props.sizeUnit}`}; 90 | background-color: ${(props) => `${props.color}`}; 91 | transform: translateX(-50%); 92 | border-radius: 50%; 93 | } 94 | `; 95 | 96 | const Loading = ({ size = 40, color = '#fff', sizeUnit = 'px' }) => { 97 | const radius = size / 2; 98 | const countBalls = 9; 99 | const ballSize = size / 8; 100 | const angle = 360 / countBalls; 101 | return ( 102 | 103 | {getBalls({ 104 | countBalls, 105 | radius, 106 | angle, 107 | color, 108 | size, 109 | ballSize, 110 | sizeUnit 111 | })} 112 | 113 | ); 114 | }; 115 | export default Loading; 116 | -------------------------------------------------------------------------------- /src/components/LoadingWords.jsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react'; 2 | import styled from 'styled-components'; 3 | import Words from '../assets/words'; 4 | import StyledWordBox from './StyledWordBox'; 5 | import { AniBlink, AniZoomIn } from './animates'; 6 | const StyledWrapper = styled.section` 7 | position: fixed; 8 | top: 0; 9 | left: 0; 10 | right: 0; 11 | bottom: 0; 12 | display: flex; 13 | align-items: center; 14 | justify-content: center; 15 | .words { 16 | background-color: rgba(108, 53, 44, 0.8); 17 | width: 20rem; 18 | min-height: 50vh; 19 | display: flex; 20 | flex-wrap: wrap; 21 | justify-content: center; 22 | clip-path: polygon(0 0, 100% 0%, 100% 75%, 75% 75%, 75% 100%, 50% 75%, 0% 75%); 23 | } 24 | &.visible .words { 25 | animation: ${AniZoomIn} 0.5s ease-in-out; 26 | } 27 | `; 28 | const WordBox = styled(StyledWordBox)` 29 | height: 100%; 30 | padding: 0.3rem; 31 | animation: ${AniBlink} 0.4s ease-in-out infinite; 32 | border-color: rgba(222, 222, 222, 0.2); 33 | &:before, 34 | &:after { 35 | opacity: 0.5; 36 | } 37 | `; 38 | const reg = /[\u4e00-\u9fa5]/g; 39 | // 去重 40 | const words = [...new Set(Words.join('').match(reg).join('').split(''))].join('').substring(0, 100); 41 | let timeInter = 0; 42 | export default function LoadingWords({ visible = false, handleDone }) { 43 | const handleUpdateWord = (evt) => { 44 | let idx = Math.floor(Math.random() * words.length); 45 | let newWord = words[idx]; 46 | evt.target.innerHTML = newWord; 47 | }; 48 | useEffect(() => { 49 | timeInter = setTimeout( 50 | () => { 51 | handleDone(); 52 | }, 53 | import.meta.env.PROD ? 1500 : 1500 54 | ); 55 | return () => { 56 | clearTimeout(timeInter); 57 | }; 58 | }, [handleDone]); 59 | return ( 60 | 61 |
62 | {words.split('').map((word, idx) => { 63 | return ( 64 | 69 | {word} 70 | 71 | ); 72 | })} 73 |
74 |
75 | ); 76 | } 77 | -------------------------------------------------------------------------------- /src/components/RefreshButton.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import styled from 'styled-components'; 3 | import StyledButton from './StyledButton'; 4 | import { MdRefresh } from 'react-icons/md'; 5 | 6 | const Button = styled(StyledButton)` 7 | position: fixed; 8 | left: 3rem; 9 | bottom: 0.5rem; 10 | padding: 5px; 11 | display: flex; 12 | align-items: center; 13 | justify-content: center; 14 | > svg { 15 | width: 28px; 16 | height: 28px; 17 | } 18 | `; 19 | export default function RefreshButton({ visible = false, handleUpdate }) { 20 | return ( 21 | 24 | ); 25 | } 26 | -------------------------------------------------------------------------------- /src/components/SaveButton.jsx: -------------------------------------------------------------------------------- 1 | import { useState } from 'react'; 2 | import styled from 'styled-components'; 3 | import html2canvas from 'html2canvas'; 4 | import { saveAs } from 'file-saver'; 5 | // import ImageDownload from '../assets/img/download.svg'; 6 | import StyledButton from './StyledButton'; 7 | import { MdDownload } from 'react-icons/md'; 8 | 9 | const ua = navigator.userAgent; 10 | const isiOSwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(ua); 11 | const isWebview = ua.toLowerCase().indexOf('micromessenger') > -1 || isiOSwebview; 12 | const Button = styled(StyledButton)` 13 | position: fixed; 14 | left: 0.5rem; 15 | bottom: 0.5rem; 16 | padding: 5px; 17 | display: flex; 18 | align-items: center; 19 | justify-content: center; 20 | > svg { 21 | width: 28px; 22 | height: 28px; 23 | } 24 | `; 25 | 26 | export default function SaveButton({ visible }) { 27 | const [generating, setGenerating] = useState(false); 28 | 29 | const handleDownload = async () => { 30 | if (isWebview) { 31 | alert('请在浏览器打开!'); 32 | } 33 | console.log('download'); 34 | let ele = document.querySelector('#HONEYED_WORDS_CARD'); 35 | await generateImage(ele); 36 | }; 37 | const generateImage = async (ele, isWebview = false) => { 38 | setGenerating(true); 39 | html2canvas(ele, { 40 | debug: import.meta.env.DEV, 41 | onclone: (document) => { 42 | let tmp = document.querySelector('#HONEYED_WORDS_CARD'); 43 | tmp.classList.add('starting'); 44 | tmp.style.transform = 'none'; 45 | tmp.style.boxShadow = 'none'; 46 | console.log('dommmm', tmp.innerHTML); 47 | }, 48 | scale: window.devicePixelRatio * (isWebview ? 2 : 1) 49 | }).then(function (canvas) { 50 | console.log(canvas); 51 | if (isWebview) { 52 | console.log('weixin'); 53 | let img = document.createElement('img'); 54 | 55 | canvas.toBlob((blob) => { 56 | const { 57 | URL: { createObjectURL } 58 | } = window; 59 | img.src = createObjectURL(blob); 60 | img.classList.add('downloadImg'); 61 | }); 62 | ele.classList.add('img'); 63 | ele.appendChild(img); 64 | setGenerating(false); 65 | } else { 66 | canvas.toBlob((blob) => { 67 | saveAs(blob, `hw-${new Date().getTime()}.png`); 68 | setGenerating(false); 69 | }, 'image/png'); 70 | // saveAs(canvas.toDataURL(), `${name}-${new Date().getTime()}.png`); 71 | } 72 | ele.classList.remove('starting'); 73 | }); 74 | }; 75 | return ( 76 | 83 | ); 84 | } 85 | -------------------------------------------------------------------------------- /src/components/ShareQR.jsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable react/jsx-no-target-blank */ 2 | import { useState, useEffect } from 'react'; 3 | import styled from 'styled-components'; 4 | import { QRCodeCanvas } from 'qrcode.react'; 5 | import html2canvas from 'html2canvas'; 6 | 7 | import StyledButton from './StyledButton'; 8 | import ImageLogo from '../assets/img/logo.png'; 9 | import { AniSlideInUp } from './animates'; 10 | import { MdClose, MdShare } from 'react-icons/md'; 11 | const ShareButton = styled(StyledButton)` 12 | padding: 5px; 13 | display: flex; 14 | align-items: center; 15 | justify-content: center; 16 | > svg { 17 | width: 28px; 18 | height: 28px; 19 | } 20 | `; 21 | const StyledBtnWrapper = styled.div` 22 | z-index: 998; 23 | position: fixed; 24 | right: 1rem; 25 | top: 1rem; 26 | margin-right: 0.5rem; 27 | `; 28 | const StyledModal = styled.section` 29 | z-index: 998; 30 | display: flex; 31 | flex-direction: column; 32 | align-items: center; 33 | justify-content: center; 34 | box-shadow: 0 0 8px black; 35 | position: fixed; 36 | top: 0; 37 | left: 0; 38 | right: 0; 39 | bottom: 0; 40 | 41 | background: rgba(2, 2, 2, 0.8); 42 | padding: 1rem; 43 | padding: 1rem; 44 | &.visible { 45 | animation: ${AniSlideInUp} 1s; 46 | } 47 | .title { 48 | font-size: 0.8rem; 49 | margin-bottom: 1rem; 50 | } 51 | .qr { 52 | width: 14rem; 53 | background: #fff; 54 | position: relative; 55 | .img { 56 | padding-bottom: 10px; 57 | display: flex; 58 | flex-direction: column; 59 | align-items: center; 60 | svg { 61 | width: 100% !important; 62 | height: 100% !important; 63 | } 64 | .tip { 65 | color: #000; 66 | font-weight: 800; 67 | font-size: 0.8rem; 68 | text-align: center; 69 | } 70 | } 71 | .download { 72 | position: absolute; 73 | top: 0; 74 | left: 0; 75 | width: 100%; 76 | height: 100%; 77 | } 78 | } 79 | `; 80 | const Modal = ({ visible = false }) => { 81 | const [imgSrc, setImgSrc] = useState(''); 82 | useEffect(() => { 83 | const qrEle = document.querySelector('#QR_DOWNLOAD'); 84 | if (visible) { 85 | html2canvas(qrEle, { 86 | debug: import.meta.env.DEV, 87 | onclone: (doc) => { 88 | let tmp = doc.querySelector('#QR_DOWNLOAD'); 89 | tmp.classList.remove('hidden'); 90 | }, 91 | scale: window.devicePixelRatio * 2 92 | }).then((cvs) => { 93 | const tmp = cvs.toDataURL(); 94 | setImgSrc(tmp); 95 | qrEle.classList.remove('hidden'); 96 | }); 97 | } else { 98 | setImgSrc(''); 99 | qrEle.classList.add('hidden'); 100 | } 101 | }, [visible]); 102 | 103 | return ( 104 | 105 |
👇长按或右键保存,发朋友圈或发给 TA 表白👇
106 |
107 |
108 | 117 |
💓想对你说的话,就在这里!💓
118 |
119 | {imgSrc ? : null} 120 |
121 |
122 | ); 123 | }; 124 | export default function ShareQR() { 125 | const [expand, setExpand] = useState(false); 126 | const handleClick = () => { 127 | setExpand((prev) => !prev); 128 | }; 129 | 130 | return ( 131 | <> 132 | 133 | 134 | 135 | {expand ? : } 136 | 137 | 138 | 139 | ); 140 | } 141 | -------------------------------------------------------------------------------- /src/components/StartButton.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import styled from 'styled-components'; 3 | import { AniBubble, AniBounceInUp } from './animates'; 4 | import ImageHeart from '../assets/img/heart.svg'; 5 | 6 | const StyledWrapper = styled.button` 7 | background-color: #60322b; 8 | cursor: pointer; 9 | outline: none; 10 | border: none; 11 | border-radius: 4px; 12 | box-shadow: 0 0 8px black; 13 | padding: 0.5rem 1rem; 14 | margin-top: 1.5rem; 15 | font-size: 2rem; 16 | animation: ${AniBounceInUp} 1s; 17 | animation-delay: 2.8s; 18 | animation-fill-mode: both; 19 | position: relative; 20 | font-weight: 800; 21 | .heart { 22 | animation-fill-mode: both; 23 | position: absolute; 24 | width: 0.8rem; 25 | animation: ${AniBubble} 3s ease infinite; 26 | top: 0.2rem; 27 | right: 0.2rem; 28 | } 29 | `; 30 | 31 | export default function StartButton({ children, ...rest }) { 32 | return ( 33 | 34 | {children} 35 | {[1, 2, 3, 4, 5, 6].map((item, idx) => { 36 | return ( 37 | heart 44 | ); 45 | })} 46 | 47 | ); 48 | } 49 | -------------------------------------------------------------------------------- /src/components/StyledButton.jsx: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components'; 2 | import { AniZoomIn } from './animates'; 3 | 4 | const StyledButton = styled.button` 5 | z-index: 998; 6 | background-size: 1rem 1rem; 7 | background-position: center; 8 | background-repeat: no-repeat; 9 | background-color: rgba(2, 2, 2, 0.6); 10 | cursor: pointer; 11 | outline: none; 12 | border: none; 13 | border-radius: 50%; 14 | box-shadow: 0 0 8px black; 15 | padding: 1rem; 16 | transition: background-image 0.5s; 17 | &.visible { 18 | animation: ${AniZoomIn} 0.5s ease-in-out; 19 | } 20 | `; 21 | 22 | export default StyledButton; 23 | -------------------------------------------------------------------------------- /src/components/StyledWordBox.jsx: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components'; 2 | 3 | const StyledWordBox = styled.span` 4 | border: 2px solid #f1ad93; 5 | margin-left: -2px; 6 | margin-top: -2px; 7 | position: relative; 8 | &:before, 9 | &:after { 10 | content: ''; 11 | display: block; 12 | position: absolute; 13 | z-index: -1; 14 | } 15 | &:after { 16 | background-image: linear-gradient( 17 | 90deg, 18 | #f1ad93, 19 | #f1ad93 75%, 20 | transparent 75%, 21 | transparent 100% 22 | ); 23 | left: 0; 24 | top: 50%; 25 | transform: translateY(-1px); 26 | width: 100%; 27 | height: 1px; 28 | background-size: 4px 1px; 29 | } 30 | &:before { 31 | background-image: linear-gradient( 32 | 180deg, 33 | #f1ad93, 34 | #f1ad93 75%, 35 | transparent 75%, 36 | transparent 100% 37 | ); 38 | left: 50%; 39 | top: 0; 40 | transform: translateX(-1px); 41 | width: 1px; 42 | height: 100%; 43 | background-size: 1px 4px; 44 | } 45 | `; 46 | 47 | export default StyledWordBox; 48 | -------------------------------------------------------------------------------- /src/components/animates.js: -------------------------------------------------------------------------------- 1 | import { keyframes } from 'styled-components'; 2 | 3 | const AniFadeIn = keyframes` 4 | from{ 5 | opacity:0; 6 | } 7 | to{ 8 | opacity:0.7; 9 | } 10 | `; 11 | const AniPopIn = keyframes` 12 | from{ 13 | transform:rotate(-10deg) translateX(-110px); 14 | opacity:0; 15 | } 16 | to{ 17 | opacity:1; 18 | transform:rotate(0) translateX(0); 19 | } 20 | `; 21 | const AniFloat = keyframes` 22 | 0%{ 23 | transform: translateY(10px); 24 | opacity:0.2; 25 | } 26 | 80%,100%{ 27 | opacity:1; 28 | transform: translateY(0); 29 | } 30 | `; 31 | const AniBubble = keyframes` 32 | 0%{ 33 | transform: translateY(20px); 34 | opacity:0.2; 35 | } 36 | 40%,60%{ 37 | opacity:1; 38 | transform: translate3d(0,0,0); 39 | } 40 | 70%{ 41 | opacity:.8; 42 | transform: translate3d(5px,-20px,0); 43 | } 44 | 80%{ 45 | opacity:0.6; 46 | transform: translate3d(0,-30px,0); 47 | } 48 | 90%{ 49 | opacity:0.4; 50 | transform: translate3d(-5px,-40px,0); 51 | } 52 | 100%{ 53 | opacity:0.2; 54 | transform: translate3d(0,-50px,0); 55 | } 56 | `; 57 | const AniFadeDown = keyframes` 58 | 0% { 59 | opacity: 0; 60 | transform: scale(0); 61 | } 62 | 63 | 50% { 64 | opacity: 0.8; 65 | transform: scale(1.4); 66 | } 67 | 100% { 68 | opacity: 1; 69 | transform: scale(1); 70 | } 71 | `; 72 | const AniBounceInUp = keyframes` 73 | from, 74 | 20%, 75 | 40%, 76 | 60%, 77 | 80%, 78 | to { 79 | animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); 80 | } 81 | 82 | 0% { 83 | opacity: 0; 84 | transform: scale3d(0.3, 0.3, 0.3); 85 | } 86 | 87 | 20% { 88 | transform: scale3d(1.1, 1.1, 1.1); 89 | } 90 | 91 | 40% { 92 | transform: scale3d(0.9, 0.9, 0.9); 93 | } 94 | 95 | 60% { 96 | opacity: 1; 97 | transform: scale3d(1.03, 1.03, 1.03); 98 | } 99 | 100 | 80% { 101 | transform: scale3d(0.97, 0.97, 0.97); 102 | } 103 | 104 | to { 105 | opacity: 1; 106 | transform: scale3d(1, 1, 1); 107 | } 108 | 109 | `; 110 | const AniZoomIn = keyframes` 111 | from { 112 | opacity: .2; 113 | transform: scale3d(0.4, 0.4, 0.4); 114 | } 115 | 50% { 116 | opacity: 1; 117 | } 118 | `; 119 | const AniBlink = keyframes` 120 | 0% { opacity:0;transform: scale(0.2) rotate(0); } 121 | 50% { opacity:0.6;transform: scale(2) rotate(30deg); } 122 | 100% { opacity:1;transform: scale(0.5) rotate(-30deg); } 123 | `; 124 | const AniSlideInDown = keyframes` 125 | from { 126 | transform: translate3d(0, -100%, 0); 127 | visibility: visible; 128 | } 129 | 130 | to { 131 | transform: translate3d(0, 0, 0); 132 | } 133 | 134 | `; 135 | const AniSlideLeft = keyframes` 136 | from{ 137 | transform:translateX(100%) 138 | } 139 | to{ 140 | transform:translateX(0) 141 | } 142 | `; 143 | const AniSlideInUp = keyframes` 144 | from{ 145 | opacity:0; 146 | transform:translateY(20px) 147 | } 148 | to{ 149 | opacity:1; 150 | transform:translateY(0) 151 | } 152 | `; 153 | export { 154 | AniSlideInUp, 155 | AniBubble, 156 | AniFloat, 157 | AniSlideLeft, 158 | AniPopIn, 159 | AniSlideInDown, 160 | AniZoomIn, 161 | AniFadeIn, 162 | AniFadeDown, 163 | AniBounceInUp, 164 | AniBlink 165 | }; 166 | -------------------------------------------------------------------------------- /src/main.jsx: -------------------------------------------------------------------------------- 1 | import Client from 'react-dom/client'; 2 | import App from './App'; 3 | import GlobalStyle from './Global.style'; 4 | 5 | const root = Client.createRoot(document.getElementById('root')); 6 | root.render( 7 | <> 8 | 9 | 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /src/utils.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-useless-escape */ 2 | 3 | export function shuffle(array) { 4 | let counter = array.length; 5 | console.log('shuffle', array); 6 | 7 | // While there are elements in the array 8 | while (counter > 0) { 9 | // Pick a random index 10 | let index = Math.floor(Math.random() * counter); 11 | 12 | // Decrease counter by 1 13 | counter--; 14 | 15 | // And swap the last element with it 16 | let temp = array[counter]; 17 | array[counter] = array[index]; 18 | array[index] = temp; 19 | } 20 | 21 | return array; 22 | } 23 | export function isMobile() { 24 | let isMobile = false; //initiate as false 25 | // device detection 26 | if ( 27 | /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test( 28 | navigator.userAgent 29 | ) || 30 | /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test( 31 | navigator.userAgent.substr(0, 4) 32 | ) 33 | ) { 34 | isMobile = true; 35 | } 36 | return isMobile; 37 | } 38 | export function getQueryValue(key = '') { 39 | const params = new URLSearchParams(location.search); 40 | const val = params.get(key) || ''; 41 | return val; 42 | } 43 | export async function sleep(dur = 2) { 44 | const misDur = dur * 1000; 45 | return new Promise((resolve) => { 46 | setTimeout(() => { 47 | resolve(); 48 | }, misDur); 49 | }); 50 | } 51 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import react from '@vitejs/plugin-react'; 3 | import pkg from './package.json'; 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | base: new URL(pkg.homepage).pathname, 7 | server: { 8 | port: 3010 9 | }, 10 | esbuild: { 11 | drop: process.env.NODE_ENV == 'production' ? ['console', 'debugger'] : [] 12 | }, 13 | plugins: [react()] 14 | }); 15 | --------------------------------------------------------------------------------