├── .github └── workflows │ └── github-actions-build.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .vscode └── settings.json ├── README.md ├── imgs ├── Screenshot 2023-04-05 at 13-21-45 Play Chess Online Against the Computer.png └── Screenshot 2023-04-05 at 13-22-22 Play Chess Online Against the Computer.png ├── package.json ├── pnpm-lock.yaml ├── src ├── arrows.ts ├── background.ts ├── content.ts ├── engine.ts ├── lichess.ts ├── popup.ts ├── types.d.ts ├── util.ts ├── util_chrome.ts ├── util_firefox.ts └── version.ts ├── static ├── chrome_manifest.json ├── icons │ ├── icon-128.png │ ├── icon-256.png │ ├── icon-48.png │ └── icon-96.png └── manifest.json └── tsconfig.json /.github/workflows/github-actions-build.yml: -------------------------------------------------------------------------------- 1 | name: Build and Release 2 | on: 3 | push: 4 | branches: 5 | - master 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | - name: Use Node.js 13 | uses: actions/setup-node@v2 14 | with: 15 | node-version: 16.x 16 | - name: Install dependencies 17 | run: | 18 | npm i pnpm -g 19 | pnpm i 20 | - name: Build 21 | run: | 22 | pnpm run build 23 | pnpm run build:zip 24 | pnpm run build:chrome 25 | pnpm run build:zipChrome 26 | - name: Create Release 27 | id: create_release 28 | uses: actions/create-release@v1 29 | env: 30 | GITHUB_TOKEN: ${{ secrets.TOKEN }} 31 | with: 32 | tag_name: ext-release-${{ github.run_number }} 33 | release_name: Extension Release 34 | body: | 35 | # Firefox store 36 | 37 | [Chess.com cheats](https://addons.mozilla.org/en-US/firefox/addon/chess-com-cheats/) is available on the firefox store, though it takes time to get approved, so using the extension from here is recommended. 38 | 39 | # Chrome store 40 | 41 | [Chess.com cheats](https://chrome.google.com/webstore/detail/chesscom-cheats/lialglmaabndifdcnkmckbfffkmaefmm?hl=en&authuser=2) is available on the chrome store, though it takes time to get approved, so using the extension from here is recommended. 42 | 43 | # Manual installation 44 | 45 | ## Firefox 46 | 47 | 1. Download the zip file below (`chess-cheats.zip`) 48 | 2. Go to `about:debugging#/runtime/this-firefox` in firefox 49 | 3. Click on "Load Temporary Add-on" 50 | 4. Select the downloaded zip file 51 | 52 | ## Chrome 53 | 54 | 1. Download the zip file below (`chess-cheats.zip`) 55 | 2. Go to `chrome://extensions` in chrome 56 | 3. Enable developer mode 57 | 4. Click on "Load unpacked" 58 | 5. Select the downloaded zip file 59 | 60 | ### Note 61 | 62 | `chess-cheats-v3.zip` is a manifest v3 version of the extension. It is just used for the chrome web store and v2 is preferred. 63 | draft: false 64 | prerelease: false 65 | - name: Upload Release Asset 66 | id: upload-release-asset 67 | uses: actions/upload-release-asset@v1 68 | env: 69 | GITHUB_TOKEN: ${{ secrets.TOKEN }} 70 | with: 71 | upload_url: ${{ steps.create_release.outputs.upload_url }} 72 | asset_path: ./chess-cheats.zip 73 | asset_name: chess-cheats.zip 74 | asset_content_type: application/zip 75 | - name: Upload Release Asset v3 76 | id: upload-release-asset-v3 77 | uses: actions/upload-release-asset@v1 78 | env: 79 | GITHUB_TOKEN: ${{ secrets.TOKEN }} 80 | with: 81 | upload_url: ${{ steps.create_release.outputs.upload_url }} 82 | asset_path: ./chess-cheats-v3.zip 83 | asset_name: chess-cheats-v3.zip 84 | asset_content_type: application/zip 85 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .history 3 | dist 4 | temp 5 | chess-cheats.zip 6 | src/util_chrome.temp.ts 7 | src/util_firefox.temp.ts 8 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .history 3 | dist 4 | temp 5 | chess-cheats.zip 6 | src/util_chrome.temp.ts 7 | src/util_firefox.temp.ts 8 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": false, 4 | "trailingComma": "all", 5 | "printWidth": 200, 6 | "semi": false 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "bestmove", 4 | "bestzip", 5 | "cometd", 6 | "copyprotection", 7 | "cpuload", 8 | "cssjs", 9 | "currline", 10 | "currmove", 11 | "currmovenumber", 12 | "esmify", 13 | "gamemodes", 14 | "hashfull", 15 | "jschessengine", 16 | "knodes", 17 | "Komodo", 18 | "lichess", 19 | "Linimik", 20 | "lowerbound", 21 | "movelist", 22 | "multilines", 23 | "multipv", 24 | "nakamura", 25 | "nnue", 26 | "readyok", 27 | "rensch", 28 | "rnbqkbnrpRNBQKBNRP", 29 | "sbhits", 30 | "seldepth", 31 | "setoption", 32 | "Stockfish", 33 | "tbhits", 34 | "TLDR", 35 | "Toastify", 36 | "uciok", 37 | "uglifyjs", 38 | "upperbound", 39 | "Verdana" 40 | ], 41 | "files.exclude": { 42 | "**/.git": true, 43 | "**/.svn": true, 44 | "**/.hg": true, 45 | "**/CVS": true, 46 | "**/.DS_Store": true, 47 | "**/Thumbs.db": true, 48 | "**/node_modules": true 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Chess.com cheater 2 | 3 | | ⚠⚠⚠ NEVER USE THIS ON A REAL CHESS GAME. THIS IS A CHEAT. YOU WILL BE BANNED. THIS PROJECT WAS MADE MERELY FOR EDUCATION PURPOSES! ⚠⚠⚠ | 4 | | -------------------------------------------------------------------------------------------------------------------------------------- | 5 | 6 | Runs a Stockfish engine in your chess.com games. Displays the best moves (up to 3) and evaluation for the current board. Uses the bundled ASM/WASM engine on chess.com and the lichess cloud-eval api to get the best move. 7 | 8 | Because of the lack of cors headers on chess.com, a faster engine using SharedArrayBuffer is not possible. You can expect *~16 depth in a second* in standard positions, although, in common positions and opening lines, cloud-eval will provide evaluations of 40+ depth (using the lichess api). 9 | 10 | The extension gets the current game by looking at the moves on the right hand side. So, you will not be able to start the extension until you (or the opponent) has made a move. 11 | 12 | ## Installation - Go to the [releases](https://github.com/jameslinimk/chess-com-cheater/releases/latest) and follow the instructions for your browser 13 | 14 | ## Popup Guide 15 | 16 | Chess.com cheat menu 17 | 18 | *Use the black bar at the top to move the popup window around 19 | 20 | - The first few lines are engine options 21 | - Game mode - Standard reads the moves from the movelist on the right. FEN reads from the chess-board object. Standard is preferred, but FEN is more reliable. FEN is also required for custom positions 22 | - FEN works even if the chess-board is not in a game (such as analysis) and does not require one move to be played, but can't detect castling rights 23 | - Current engine - Either ASM or Single Threaded WASM. Single is preferred, but is not supported on all browsers 24 | - Current color - The color you are playing as. The arrows will be flipped if incorrectly configured 25 | - Multi lines - How many moves to display (the more transparent, the worse) 26 | - Max depth - The max depth to search to 27 | - The `Start hack`/`Stop hack` button will start/stop the engine 28 | - The next few lines are info about the current evaluation 29 | - Best move - The top engine move 30 | - Eval - The evaluation of the current board (1 = 1 pawn) (positive is good for white) 31 | - Depth - The depth the engine has searched to 32 | - The next few buttons display info about the game 33 | - Copy FEN - Copies the current FEN to your clipboard 34 | - Copy PGN - Copies the current PGN to your clipboard 35 | - Open in lichess - Opens the current board in the lichess analysis board 36 | 37 | ## ⚠ Must have Chess.com Settings 38 | 39 | - You must have "none" for move animations, "arcade" breaks it 40 | - You must have "figurine" for piece notations, "text" breaks it 41 | 42 | ## How the arrows are drawn 43 | 44 | > TLDR, the more transparent the arrow, the worse the move is compared to the best move. 45 | 46 | If the difference between the best move's evaluation and the arrows move is: 47 | 48 | | Difference | Arrow opacity | 49 | | -------------- | ------------- | 50 | | `>5` | 5% | 51 | | `>3` | 10% | 52 | | `>1` | 30% | 53 | | `>0.5` | 50% | 54 | | any thing else | 60% | 55 | 56 | ## Building 57 | 58 | ```bash 59 | npm i pnpm -g # if you don't have pnpm 60 | pnpm i 61 | pnpm run watch # builds to ./dist and watches for changes 62 | ```` 63 | 64 | ## Example 65 | 66 | ![screenshot](./imgs/Screenshot%202023-04-05%20at%2013-22-22%20Play%20Chess%20Online%20Against%20the%20Computer.png) 67 | -------------------------------------------------------------------------------- /imgs/Screenshot 2023-04-05 at 13-21-45 Play Chess Online Against the Computer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jameslinimk/chess-com-cheater/2ee0db8dfb6dfa21f45d7b1b785220d47b0e3724/imgs/Screenshot 2023-04-05 at 13-21-45 Play Chess Online Against the Computer.png -------------------------------------------------------------------------------- /imgs/Screenshot 2023-04-05 at 13-22-22 Play Chess Online Against the Computer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jameslinimk/chess-com-cheater/2ee0db8dfb6dfa21f45d7b1b785220d47b0e3724/imgs/Screenshot 2023-04-05 at 13-22-22 Play Chess Online Against the Computer.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chess-com-cheater", 3 | "scripts": { 4 | "build:static": "shx cp -r static/* dist && shx rm dist/chrome_manifest.json", 5 | "build:chromeManifest": "shx cp static/chrome_manifest.json dist/manifest.json", 6 | "build:content": "browserify -p esmify temp/content.js -o temp/content.bundle.js && terser temp/content.bundle.js -m -c --comments false -o dist/content.bundle.min.js", 7 | "build:bg": "browserify -p esmify temp/background.js -o temp/background.bundle.js && terser temp/background.bundle.js -m -c --comments false -o dist/background.bundle.min.js", 8 | "build:devContent": "browserify -p esmify temp/content.js -o dist/content.bundle.min.js", 9 | "build:devBg": "browserify -p esmify temp/background.js -o dist/background.bundle.min.js", 10 | "build": "shx rm -rf dist && shx mkdir dist && shx rm -rf temp && shx mkdir temp && npm run build:static && tsc -B && npm run build:content && npm run build:bg && shx rm -rf temp && shx echo Done!", 11 | "build:dev": "shx rm -rf dist && shx mkdir dist && shx rm -rf temp && shx mkdir temp && npm run build:static && tsc -B && npm run build:devContent && npm run build:devBg && shx rm -rf temp && shx echo Done!", 12 | "build:chrome": "shx rm -rf dist && shx mkdir dist && shx rm -rf temp && shx mkdir temp && npm run build:static && npm run build:chromeManifest && npm run build:switch && tsc -B && npm run build:switchEnd && npm run build:content && npm run build:bg && shx rm -rf temp && shx echo Done!", 13 | "build:devChrome": "shx rm -rf dist && shx mkdir dist && shx rm -rf temp && shx mkdir temp && npm run build:static && npm run build:chromeManifest && npm run build:switch && tsc -B && npm run build:switchEnd && npm run build:devContent && npm run build:devBg && shx rm -rf temp && shx echo Done!", 14 | "build:switch": "shx cp src/util_firefox.ts src/util_firefox.temp.ts && shx cp src/util_chrome.ts src/util_chrome.temp.ts && shx mv src/util_chrome.ts src/util_firefox.ts", 15 | "build:switchEnd": "shx mv src/util_firefox.temp.ts src/util_firefox.ts && shx mv src/util_chrome.temp.ts src/util_chrome.ts", 16 | "build:zip": "cd dist && bestzip ../chess-cheats.zip *", 17 | "build:zipChrome": "cd dist && bestzip ../chess-cheats-v3.zip *", 18 | "watch": "watch \"npm run build:dev\" --interval=0.5 ./src", 19 | "watch:chrome": "watch \"npm run build:devChrome\" --interval=0.5 ./src" 20 | }, 21 | "dependencies": { 22 | "chess.js": "1.0.0-beta.6", 23 | "copy-to-clipboard": "^3.3.3", 24 | "sync-fetch": "^0.4.2", 25 | "toastify-js": "^1.12.0", 26 | "watch": "^1.0.2" 27 | }, 28 | "devDependencies": { 29 | "@types/chrome": "^0.0.236", 30 | "@types/sync-fetch": "^0.4.0", 31 | "@types/toastify-js": "^1.11.1", 32 | "bestzip": "^2.2.1", 33 | "browserify": "^17.0.0", 34 | "esmify": "^2.1.1", 35 | "shx": "^0.3.4", 36 | "terser": "^5.17.4", 37 | "typescript": "^5.0.4" 38 | }, 39 | "type": "module" 40 | } 41 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | dependencies: 4 | chess.js: 5 | specifier: 1.0.0-beta.6 6 | version: 1.0.0-beta.6 7 | copy-to-clipboard: 8 | specifier: ^3.3.3 9 | version: 3.3.3 10 | sync-fetch: 11 | specifier: ^0.4.2 12 | version: 0.4.2 13 | toastify-js: 14 | specifier: ^1.12.0 15 | version: 1.12.0 16 | watch: 17 | specifier: ^1.0.2 18 | version: 1.0.2 19 | 20 | devDependencies: 21 | '@types/chrome': 22 | specifier: ^0.0.236 23 | version: 0.0.236 24 | '@types/sync-fetch': 25 | specifier: ^0.4.0 26 | version: 0.4.0 27 | '@types/toastify-js': 28 | specifier: ^1.11.1 29 | version: 1.11.1 30 | bestzip: 31 | specifier: ^2.2.1 32 | version: 2.2.1 33 | browserify: 34 | specifier: ^17.0.0 35 | version: 17.0.0 36 | esmify: 37 | specifier: ^2.1.1 38 | version: 2.1.1 39 | shx: 40 | specifier: ^0.3.4 41 | version: 0.3.4 42 | terser: 43 | specifier: ^5.17.4 44 | version: 5.17.4 45 | typescript: 46 | specifier: ^5.0.4 47 | version: 5.0.4 48 | 49 | packages: 50 | 51 | /@ampproject/remapping@2.2.1: 52 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 53 | engines: {node: '>=6.0.0'} 54 | dependencies: 55 | '@jridgewell/gen-mapping': 0.3.3 56 | '@jridgewell/trace-mapping': 0.3.18 57 | dev: true 58 | 59 | /@babel/code-frame@7.21.4: 60 | resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} 61 | engines: {node: '>=6.9.0'} 62 | dependencies: 63 | '@babel/highlight': 7.18.6 64 | dev: true 65 | 66 | /@babel/compat-data@7.21.7: 67 | resolution: {integrity: sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==} 68 | engines: {node: '>=6.9.0'} 69 | dev: true 70 | 71 | /@babel/core@7.21.8: 72 | resolution: {integrity: sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==} 73 | engines: {node: '>=6.9.0'} 74 | dependencies: 75 | '@ampproject/remapping': 2.2.1 76 | '@babel/code-frame': 7.21.4 77 | '@babel/generator': 7.21.5 78 | '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.8) 79 | '@babel/helper-module-transforms': 7.21.5 80 | '@babel/helpers': 7.21.5 81 | '@babel/parser': 7.21.8 82 | '@babel/template': 7.20.7 83 | '@babel/traverse': 7.21.5 84 | '@babel/types': 7.21.5 85 | convert-source-map: 1.9.0 86 | debug: 4.3.4 87 | gensync: 1.0.0-beta.2 88 | json5: 2.2.3 89 | semver: 6.3.0 90 | transitivePeerDependencies: 91 | - supports-color 92 | dev: true 93 | 94 | /@babel/generator@7.21.5: 95 | resolution: {integrity: sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==} 96 | engines: {node: '>=6.9.0'} 97 | dependencies: 98 | '@babel/types': 7.21.5 99 | '@jridgewell/gen-mapping': 0.3.3 100 | '@jridgewell/trace-mapping': 0.3.18 101 | jsesc: 2.5.2 102 | dev: true 103 | 104 | /@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.8): 105 | resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==} 106 | engines: {node: '>=6.9.0'} 107 | peerDependencies: 108 | '@babel/core': ^7.0.0 109 | dependencies: 110 | '@babel/compat-data': 7.21.7 111 | '@babel/core': 7.21.8 112 | '@babel/helper-validator-option': 7.21.0 113 | browserslist: 4.21.5 114 | lru-cache: 5.1.1 115 | semver: 6.3.0 116 | dev: true 117 | 118 | /@babel/helper-environment-visitor@7.21.5: 119 | resolution: {integrity: sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==} 120 | engines: {node: '>=6.9.0'} 121 | dev: true 122 | 123 | /@babel/helper-function-name@7.21.0: 124 | resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} 125 | engines: {node: '>=6.9.0'} 126 | dependencies: 127 | '@babel/template': 7.20.7 128 | '@babel/types': 7.21.5 129 | dev: true 130 | 131 | /@babel/helper-hoist-variables@7.18.6: 132 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} 133 | engines: {node: '>=6.9.0'} 134 | dependencies: 135 | '@babel/types': 7.21.5 136 | dev: true 137 | 138 | /@babel/helper-module-imports@7.21.4: 139 | resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} 140 | engines: {node: '>=6.9.0'} 141 | dependencies: 142 | '@babel/types': 7.21.5 143 | dev: true 144 | 145 | /@babel/helper-module-transforms@7.21.5: 146 | resolution: {integrity: sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==} 147 | engines: {node: '>=6.9.0'} 148 | dependencies: 149 | '@babel/helper-environment-visitor': 7.21.5 150 | '@babel/helper-module-imports': 7.21.4 151 | '@babel/helper-simple-access': 7.21.5 152 | '@babel/helper-split-export-declaration': 7.18.6 153 | '@babel/helper-validator-identifier': 7.19.1 154 | '@babel/template': 7.20.7 155 | '@babel/traverse': 7.21.5 156 | '@babel/types': 7.21.5 157 | transitivePeerDependencies: 158 | - supports-color 159 | dev: true 160 | 161 | /@babel/helper-plugin-utils@7.21.5: 162 | resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==} 163 | engines: {node: '>=6.9.0'} 164 | dev: true 165 | 166 | /@babel/helper-simple-access@7.21.5: 167 | resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==} 168 | engines: {node: '>=6.9.0'} 169 | dependencies: 170 | '@babel/types': 7.21.5 171 | dev: true 172 | 173 | /@babel/helper-split-export-declaration@7.18.6: 174 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} 175 | engines: {node: '>=6.9.0'} 176 | dependencies: 177 | '@babel/types': 7.21.5 178 | dev: true 179 | 180 | /@babel/helper-string-parser@7.21.5: 181 | resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} 182 | engines: {node: '>=6.9.0'} 183 | dev: true 184 | 185 | /@babel/helper-validator-identifier@7.19.1: 186 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 187 | engines: {node: '>=6.9.0'} 188 | dev: true 189 | 190 | /@babel/helper-validator-option@7.21.0: 191 | resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} 192 | engines: {node: '>=6.9.0'} 193 | dev: true 194 | 195 | /@babel/helpers@7.21.5: 196 | resolution: {integrity: sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==} 197 | engines: {node: '>=6.9.0'} 198 | dependencies: 199 | '@babel/template': 7.20.7 200 | '@babel/traverse': 7.21.5 201 | '@babel/types': 7.21.5 202 | transitivePeerDependencies: 203 | - supports-color 204 | dev: true 205 | 206 | /@babel/highlight@7.18.6: 207 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 208 | engines: {node: '>=6.9.0'} 209 | dependencies: 210 | '@babel/helper-validator-identifier': 7.19.1 211 | chalk: 2.4.2 212 | js-tokens: 4.0.0 213 | dev: true 214 | 215 | /@babel/parser@7.21.8: 216 | resolution: {integrity: sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==} 217 | engines: {node: '>=6.0.0'} 218 | hasBin: true 219 | dependencies: 220 | '@babel/types': 7.21.5 221 | dev: true 222 | 223 | /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.8): 224 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 225 | peerDependencies: 226 | '@babel/core': ^7.0.0-0 227 | dependencies: 228 | '@babel/core': 7.21.8 229 | '@babel/helper-plugin-utils': 7.21.5 230 | dev: true 231 | 232 | /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.8): 233 | resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} 234 | peerDependencies: 235 | '@babel/core': ^7.0.0-0 236 | dependencies: 237 | '@babel/core': 7.21.8 238 | '@babel/helper-plugin-utils': 7.21.5 239 | dev: true 240 | 241 | /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.8): 242 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 243 | peerDependencies: 244 | '@babel/core': ^7.0.0-0 245 | dependencies: 246 | '@babel/core': 7.21.8 247 | '@babel/helper-plugin-utils': 7.21.5 248 | dev: true 249 | 250 | /@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.21.8): 251 | resolution: {integrity: sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==} 252 | engines: {node: '>=6.9.0'} 253 | peerDependencies: 254 | '@babel/core': ^7.0.0-0 255 | dependencies: 256 | '@babel/core': 7.21.8 257 | '@babel/helper-module-transforms': 7.21.5 258 | '@babel/helper-plugin-utils': 7.21.5 259 | '@babel/helper-simple-access': 7.21.5 260 | transitivePeerDependencies: 261 | - supports-color 262 | dev: true 263 | 264 | /@babel/template@7.20.7: 265 | resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} 266 | engines: {node: '>=6.9.0'} 267 | dependencies: 268 | '@babel/code-frame': 7.21.4 269 | '@babel/parser': 7.21.8 270 | '@babel/types': 7.21.5 271 | dev: true 272 | 273 | /@babel/traverse@7.21.5: 274 | resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} 275 | engines: {node: '>=6.9.0'} 276 | dependencies: 277 | '@babel/code-frame': 7.21.4 278 | '@babel/generator': 7.21.5 279 | '@babel/helper-environment-visitor': 7.21.5 280 | '@babel/helper-function-name': 7.21.0 281 | '@babel/helper-hoist-variables': 7.18.6 282 | '@babel/helper-split-export-declaration': 7.18.6 283 | '@babel/parser': 7.21.8 284 | '@babel/types': 7.21.5 285 | debug: 4.3.4 286 | globals: 11.12.0 287 | transitivePeerDependencies: 288 | - supports-color 289 | dev: true 290 | 291 | /@babel/types@7.21.5: 292 | resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} 293 | engines: {node: '>=6.9.0'} 294 | dependencies: 295 | '@babel/helper-string-parser': 7.21.5 296 | '@babel/helper-validator-identifier': 7.19.1 297 | to-fast-properties: 2.0.0 298 | dev: true 299 | 300 | /@jridgewell/gen-mapping@0.3.3: 301 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 302 | engines: {node: '>=6.0.0'} 303 | dependencies: 304 | '@jridgewell/set-array': 1.1.2 305 | '@jridgewell/sourcemap-codec': 1.4.15 306 | '@jridgewell/trace-mapping': 0.3.18 307 | dev: true 308 | 309 | /@jridgewell/resolve-uri@3.1.0: 310 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 311 | engines: {node: '>=6.0.0'} 312 | dev: true 313 | 314 | /@jridgewell/set-array@1.1.2: 315 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 316 | engines: {node: '>=6.0.0'} 317 | dev: true 318 | 319 | /@jridgewell/source-map@0.3.3: 320 | resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} 321 | dependencies: 322 | '@jridgewell/gen-mapping': 0.3.3 323 | '@jridgewell/trace-mapping': 0.3.18 324 | dev: true 325 | 326 | /@jridgewell/sourcemap-codec@1.4.14: 327 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 328 | dev: true 329 | 330 | /@jridgewell/sourcemap-codec@1.4.15: 331 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 332 | dev: true 333 | 334 | /@jridgewell/trace-mapping@0.3.18: 335 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 336 | dependencies: 337 | '@jridgewell/resolve-uri': 3.1.0 338 | '@jridgewell/sourcemap-codec': 1.4.14 339 | dev: true 340 | 341 | /@types/chrome@0.0.236: 342 | resolution: {integrity: sha512-ArQoxO9WtDY6GWcT2cpo+D+hyASPeFt7PHQEUDXwQhRS00Rbop07rnEOA046yws0HkM83Tcew/hW6Dgvnj4iMQ==} 343 | dependencies: 344 | '@types/filesystem': 0.0.32 345 | '@types/har-format': 1.2.10 346 | dev: true 347 | 348 | /@types/filesystem@0.0.32: 349 | resolution: {integrity: sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==} 350 | dependencies: 351 | '@types/filewriter': 0.0.29 352 | dev: true 353 | 354 | /@types/filewriter@0.0.29: 355 | resolution: {integrity: sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==} 356 | dev: true 357 | 358 | /@types/har-format@1.2.10: 359 | resolution: {integrity: sha512-o0J30wqycjF5miWDKYKKzzOU1ZTLuA42HZ4HE7/zqTOc/jTLdQ5NhYWvsRQo45Nfi1KHoRdNhteSI4BAxTF1Pg==} 360 | dev: true 361 | 362 | /@types/node-fetch@2.6.4: 363 | resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} 364 | dependencies: 365 | '@types/node': 20.2.1 366 | form-data: 3.0.1 367 | dev: true 368 | 369 | /@types/node@20.2.1: 370 | resolution: {integrity: sha512-DqJociPbZP1lbZ5SQPk4oag6W7AyaGMO6gSfRwq3PWl4PXTwJpRQJhDq4W0kzrg3w6tJ1SwlvGZ5uKFHY13LIg==} 371 | dev: true 372 | 373 | /@types/sync-fetch@0.4.0: 374 | resolution: {integrity: sha512-kUhMgk1Es/vKdwC27O29j2Y3KM52Z/k1c1sBUfNJoI8fr0WNRRFaMmq7oJ18xkiN08cNBsgNA86CV030JthgOA==} 375 | dependencies: 376 | '@types/node-fetch': 2.6.4 377 | dev: true 378 | 379 | /@types/toastify-js@1.11.1: 380 | resolution: {integrity: sha512-Ef03kGFWseAQYIQwN83WbhRxD+DOd+X6p22j9olA/TnvE0crDMc3fyoctKSpXgEDVWq5l3p98otIdpNX1pOYMA==} 381 | dev: true 382 | 383 | /JSONStream@1.3.5: 384 | resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} 385 | hasBin: true 386 | dependencies: 387 | jsonparse: 1.3.1 388 | through: 2.3.8 389 | dev: true 390 | 391 | /acorn-node@1.8.2: 392 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} 393 | dependencies: 394 | acorn: 7.4.1 395 | acorn-walk: 7.2.0 396 | xtend: 4.0.2 397 | dev: true 398 | 399 | /acorn-walk@7.2.0: 400 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 401 | engines: {node: '>=0.4.0'} 402 | dev: true 403 | 404 | /acorn@7.4.1: 405 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 406 | engines: {node: '>=0.4.0'} 407 | hasBin: true 408 | dev: true 409 | 410 | /acorn@8.8.2: 411 | resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 412 | engines: {node: '>=0.4.0'} 413 | hasBin: true 414 | dev: true 415 | 416 | /ansi-regex@2.1.1: 417 | resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} 418 | engines: {node: '>=0.10.0'} 419 | dev: true 420 | 421 | /ansi-regex@5.0.1: 422 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 423 | engines: {node: '>=8'} 424 | dev: true 425 | 426 | /ansi-styles@2.2.1: 427 | resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} 428 | engines: {node: '>=0.10.0'} 429 | dev: true 430 | 431 | /ansi-styles@3.2.1: 432 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 433 | engines: {node: '>=4'} 434 | dependencies: 435 | color-convert: 1.9.3 436 | dev: true 437 | 438 | /ansi-styles@4.3.0: 439 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 440 | engines: {node: '>=8'} 441 | dependencies: 442 | color-convert: 2.0.1 443 | dev: true 444 | 445 | /archiver-utils@2.1.0: 446 | resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} 447 | engines: {node: '>= 6'} 448 | dependencies: 449 | glob: 7.2.3 450 | graceful-fs: 4.2.11 451 | lazystream: 1.0.1 452 | lodash.defaults: 4.2.0 453 | lodash.difference: 4.5.0 454 | lodash.flatten: 4.4.0 455 | lodash.isplainobject: 4.0.6 456 | lodash.union: 4.6.0 457 | normalize-path: 3.0.0 458 | readable-stream: 2.3.8 459 | dev: true 460 | 461 | /archiver@5.3.1: 462 | resolution: {integrity: sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==} 463 | engines: {node: '>= 10'} 464 | dependencies: 465 | archiver-utils: 2.1.0 466 | async: 3.2.4 467 | buffer-crc32: 0.2.13 468 | readable-stream: 3.6.2 469 | readdir-glob: 1.1.3 470 | tar-stream: 2.2.0 471 | zip-stream: 4.1.0 472 | dev: true 473 | 474 | /asn1.js@5.4.1: 475 | resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} 476 | dependencies: 477 | bn.js: 4.12.0 478 | inherits: 2.0.4 479 | minimalistic-assert: 1.0.1 480 | safer-buffer: 2.1.2 481 | dev: true 482 | 483 | /assert@1.5.0: 484 | resolution: {integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==} 485 | dependencies: 486 | object-assign: 4.1.1 487 | util: 0.10.3 488 | dev: true 489 | 490 | /async@3.2.4: 491 | resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} 492 | dev: true 493 | 494 | /asynckit@0.4.0: 495 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 496 | dev: true 497 | 498 | /available-typed-arrays@1.0.5: 499 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 500 | engines: {node: '>= 0.4'} 501 | dev: true 502 | 503 | /babel-code-frame@6.26.0: 504 | resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} 505 | dependencies: 506 | chalk: 1.1.3 507 | esutils: 2.0.3 508 | js-tokens: 3.0.2 509 | dev: true 510 | 511 | /babel-messages@6.23.0: 512 | resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} 513 | dependencies: 514 | babel-runtime: 6.26.0 515 | dev: true 516 | 517 | /babel-plugin-import-to-require@1.0.0: 518 | resolution: {integrity: sha512-dc843CwrFivjO8AVgxcHvxl0cb7J7Ed8ZGFP8+PjH3X1CnyzYtAU1WL1349m9Wc/+oqk4ETx2+cIEO2jlp3XyQ==} 519 | dependencies: 520 | babel-template: 6.26.0 521 | transitivePeerDependencies: 522 | - supports-color 523 | dev: true 524 | 525 | /babel-runtime@6.26.0: 526 | resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} 527 | dependencies: 528 | core-js: 2.6.12 529 | regenerator-runtime: 0.11.1 530 | dev: true 531 | 532 | /babel-template@6.26.0: 533 | resolution: {integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==} 534 | dependencies: 535 | babel-runtime: 6.26.0 536 | babel-traverse: 6.26.0 537 | babel-types: 6.26.0 538 | babylon: 6.18.0 539 | lodash: 4.17.21 540 | transitivePeerDependencies: 541 | - supports-color 542 | dev: true 543 | 544 | /babel-traverse@6.26.0: 545 | resolution: {integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==} 546 | dependencies: 547 | babel-code-frame: 6.26.0 548 | babel-messages: 6.23.0 549 | babel-runtime: 6.26.0 550 | babel-types: 6.26.0 551 | babylon: 6.18.0 552 | debug: 2.6.9 553 | globals: 9.18.0 554 | invariant: 2.2.4 555 | lodash: 4.17.21 556 | transitivePeerDependencies: 557 | - supports-color 558 | dev: true 559 | 560 | /babel-types@6.26.0: 561 | resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} 562 | dependencies: 563 | babel-runtime: 6.26.0 564 | esutils: 2.0.3 565 | lodash: 4.17.21 566 | to-fast-properties: 1.0.3 567 | dev: true 568 | 569 | /babylon@6.18.0: 570 | resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} 571 | hasBin: true 572 | dev: true 573 | 574 | /balanced-match@1.0.2: 575 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 576 | dev: true 577 | 578 | /base64-js@1.5.1: 579 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 580 | 581 | /bestzip@2.2.1: 582 | resolution: {integrity: sha512-XdAb87RXqOqF7C6UgQG9IqpEHJvS6IOUo0bXWEAebjSSdhDjsbcqFKdHpn5Q7QHz2pGr3Zmw4wgG3LlzdyDz7w==} 583 | engines: {node: '>=10'} 584 | hasBin: true 585 | dependencies: 586 | archiver: 5.3.1 587 | async: 3.2.4 588 | glob: 7.2.3 589 | which: 2.0.2 590 | yargs: 16.2.0 591 | dev: true 592 | 593 | /bl@4.1.0: 594 | resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} 595 | dependencies: 596 | buffer: 5.7.1 597 | inherits: 2.0.4 598 | readable-stream: 3.6.2 599 | dev: true 600 | 601 | /bn.js@4.12.0: 602 | resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} 603 | dev: true 604 | 605 | /bn.js@5.2.1: 606 | resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} 607 | dev: true 608 | 609 | /brace-expansion@1.1.11: 610 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 611 | dependencies: 612 | balanced-match: 1.0.2 613 | concat-map: 0.0.1 614 | dev: true 615 | 616 | /brace-expansion@2.0.1: 617 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 618 | dependencies: 619 | balanced-match: 1.0.2 620 | dev: true 621 | 622 | /brorand@1.1.0: 623 | resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} 624 | dev: true 625 | 626 | /browser-pack@6.1.0: 627 | resolution: {integrity: sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==} 628 | hasBin: true 629 | dependencies: 630 | JSONStream: 1.3.5 631 | combine-source-map: 0.8.0 632 | defined: 1.0.1 633 | safe-buffer: 5.2.1 634 | through2: 2.0.5 635 | umd: 3.0.3 636 | dev: true 637 | 638 | /browser-resolve@2.0.0: 639 | resolution: {integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==} 640 | dependencies: 641 | resolve: 1.22.2 642 | dev: true 643 | 644 | /browserify-aes@1.2.0: 645 | resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} 646 | dependencies: 647 | buffer-xor: 1.0.3 648 | cipher-base: 1.0.4 649 | create-hash: 1.2.0 650 | evp_bytestokey: 1.0.3 651 | inherits: 2.0.4 652 | safe-buffer: 5.2.1 653 | dev: true 654 | 655 | /browserify-cipher@1.0.1: 656 | resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} 657 | dependencies: 658 | browserify-aes: 1.2.0 659 | browserify-des: 1.0.2 660 | evp_bytestokey: 1.0.3 661 | dev: true 662 | 663 | /browserify-des@1.0.2: 664 | resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} 665 | dependencies: 666 | cipher-base: 1.0.4 667 | des.js: 1.0.1 668 | inherits: 2.0.4 669 | safe-buffer: 5.2.1 670 | dev: true 671 | 672 | /browserify-rsa@4.1.0: 673 | resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} 674 | dependencies: 675 | bn.js: 5.2.1 676 | randombytes: 2.1.0 677 | dev: true 678 | 679 | /browserify-sign@4.2.1: 680 | resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} 681 | dependencies: 682 | bn.js: 5.2.1 683 | browserify-rsa: 4.1.0 684 | create-hash: 1.2.0 685 | create-hmac: 1.1.7 686 | elliptic: 6.5.4 687 | inherits: 2.0.4 688 | parse-asn1: 5.1.6 689 | readable-stream: 3.6.2 690 | safe-buffer: 5.2.1 691 | dev: true 692 | 693 | /browserify-zlib@0.2.0: 694 | resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} 695 | dependencies: 696 | pako: 1.0.11 697 | dev: true 698 | 699 | /browserify@17.0.0: 700 | resolution: {integrity: sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==} 701 | engines: {node: '>= 0.8'} 702 | hasBin: true 703 | dependencies: 704 | JSONStream: 1.3.5 705 | assert: 1.5.0 706 | browser-pack: 6.1.0 707 | browser-resolve: 2.0.0 708 | browserify-zlib: 0.2.0 709 | buffer: 5.2.1 710 | cached-path-relative: 1.1.0 711 | concat-stream: 1.6.2 712 | console-browserify: 1.2.0 713 | constants-browserify: 1.0.0 714 | crypto-browserify: 3.12.0 715 | defined: 1.0.1 716 | deps-sort: 2.0.1 717 | domain-browser: 1.2.0 718 | duplexer2: 0.1.4 719 | events: 3.3.0 720 | glob: 7.2.3 721 | has: 1.0.3 722 | htmlescape: 1.1.1 723 | https-browserify: 1.0.0 724 | inherits: 2.0.4 725 | insert-module-globals: 7.2.1 726 | labeled-stream-splicer: 2.0.2 727 | mkdirp-classic: 0.5.3 728 | module-deps: 6.2.3 729 | os-browserify: 0.3.0 730 | parents: 1.0.1 731 | path-browserify: 1.0.1 732 | process: 0.11.10 733 | punycode: 1.4.1 734 | querystring-es3: 0.2.1 735 | read-only-stream: 2.0.0 736 | readable-stream: 2.3.8 737 | resolve: 1.22.2 738 | shasum-object: 1.0.0 739 | shell-quote: 1.8.1 740 | stream-browserify: 3.0.0 741 | stream-http: 3.2.0 742 | string_decoder: 1.3.0 743 | subarg: 1.0.0 744 | syntax-error: 1.4.0 745 | through2: 2.0.5 746 | timers-browserify: 1.4.2 747 | tty-browserify: 0.0.1 748 | url: 0.11.0 749 | util: 0.12.5 750 | vm-browserify: 1.1.2 751 | xtend: 4.0.2 752 | dev: true 753 | 754 | /browserslist@4.21.5: 755 | resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} 756 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 757 | hasBin: true 758 | dependencies: 759 | caniuse-lite: 1.0.30001488 760 | electron-to-chromium: 1.4.400 761 | node-releases: 2.0.10 762 | update-browserslist-db: 1.0.11(browserslist@4.21.5) 763 | dev: true 764 | 765 | /buffer-crc32@0.2.13: 766 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 767 | dev: true 768 | 769 | /buffer-from@1.1.2: 770 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 771 | dev: true 772 | 773 | /buffer-xor@1.0.3: 774 | resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} 775 | dev: true 776 | 777 | /buffer@5.2.1: 778 | resolution: {integrity: sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==} 779 | dependencies: 780 | base64-js: 1.5.1 781 | ieee754: 1.2.1 782 | dev: true 783 | 784 | /buffer@5.7.1: 785 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 786 | dependencies: 787 | base64-js: 1.5.1 788 | ieee754: 1.2.1 789 | 790 | /builtin-status-codes@3.0.0: 791 | resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} 792 | dev: true 793 | 794 | /cached-path-relative@1.1.0: 795 | resolution: {integrity: sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==} 796 | dev: true 797 | 798 | /call-bind@1.0.2: 799 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 800 | dependencies: 801 | function-bind: 1.1.1 802 | get-intrinsic: 1.2.1 803 | dev: true 804 | 805 | /caniuse-lite@1.0.30001488: 806 | resolution: {integrity: sha512-NORIQuuL4xGpIy6iCCQGN4iFjlBXtfKWIenlUuyZJumLRIindLb7wXM+GO8erEhb7vXfcnf4BAg2PrSDN5TNLQ==} 807 | dev: true 808 | 809 | /chalk@1.1.3: 810 | resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} 811 | engines: {node: '>=0.10.0'} 812 | dependencies: 813 | ansi-styles: 2.2.1 814 | escape-string-regexp: 1.0.5 815 | has-ansi: 2.0.0 816 | strip-ansi: 3.0.1 817 | supports-color: 2.0.0 818 | dev: true 819 | 820 | /chalk@2.4.2: 821 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 822 | engines: {node: '>=4'} 823 | dependencies: 824 | ansi-styles: 3.2.1 825 | escape-string-regexp: 1.0.5 826 | supports-color: 5.5.0 827 | dev: true 828 | 829 | /chess.js@1.0.0-beta.6: 830 | resolution: {integrity: sha512-sqBfX1VL3csSyqVM5ogbKA+aRlZyWDh276ruWXphwI0lDUMs7iYjZs29BOi49f7mXeunJE7cdfnIZhihsyLnsA==} 831 | dev: false 832 | 833 | /cipher-base@1.0.4: 834 | resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} 835 | dependencies: 836 | inherits: 2.0.4 837 | safe-buffer: 5.2.1 838 | dev: true 839 | 840 | /cliui@7.0.4: 841 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 842 | dependencies: 843 | string-width: 4.2.3 844 | strip-ansi: 6.0.1 845 | wrap-ansi: 7.0.0 846 | dev: true 847 | 848 | /color-convert@1.9.3: 849 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 850 | dependencies: 851 | color-name: 1.1.3 852 | dev: true 853 | 854 | /color-convert@2.0.1: 855 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 856 | engines: {node: '>=7.0.0'} 857 | dependencies: 858 | color-name: 1.1.4 859 | dev: true 860 | 861 | /color-name@1.1.3: 862 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 863 | dev: true 864 | 865 | /color-name@1.1.4: 866 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 867 | dev: true 868 | 869 | /combine-source-map@0.8.0: 870 | resolution: {integrity: sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==} 871 | dependencies: 872 | convert-source-map: 1.1.3 873 | inline-source-map: 0.6.2 874 | lodash.memoize: 3.0.4 875 | source-map: 0.5.7 876 | dev: true 877 | 878 | /combined-stream@1.0.8: 879 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 880 | engines: {node: '>= 0.8'} 881 | dependencies: 882 | delayed-stream: 1.0.0 883 | dev: true 884 | 885 | /commander@2.20.3: 886 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 887 | dev: true 888 | 889 | /compress-commons@4.1.1: 890 | resolution: {integrity: sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==} 891 | engines: {node: '>= 10'} 892 | dependencies: 893 | buffer-crc32: 0.2.13 894 | crc32-stream: 4.0.2 895 | normalize-path: 3.0.0 896 | readable-stream: 3.6.2 897 | dev: true 898 | 899 | /concat-map@0.0.1: 900 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 901 | dev: true 902 | 903 | /concat-stream@1.6.2: 904 | resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} 905 | engines: {'0': node >= 0.8} 906 | dependencies: 907 | buffer-from: 1.1.2 908 | inherits: 2.0.4 909 | readable-stream: 2.3.8 910 | typedarray: 0.0.6 911 | dev: true 912 | 913 | /console-browserify@1.2.0: 914 | resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} 915 | dev: true 916 | 917 | /constants-browserify@1.0.0: 918 | resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} 919 | dev: true 920 | 921 | /convert-source-map@1.1.3: 922 | resolution: {integrity: sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==} 923 | dev: true 924 | 925 | /convert-source-map@1.9.0: 926 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 927 | dev: true 928 | 929 | /copy-to-clipboard@3.3.3: 930 | resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} 931 | dependencies: 932 | toggle-selection: 1.0.6 933 | dev: false 934 | 935 | /core-js@2.6.12: 936 | resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} 937 | deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. 938 | requiresBuild: true 939 | dev: true 940 | 941 | /core-util-is@1.0.3: 942 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 943 | dev: true 944 | 945 | /crc-32@1.2.2: 946 | resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} 947 | engines: {node: '>=0.8'} 948 | hasBin: true 949 | dev: true 950 | 951 | /crc32-stream@4.0.2: 952 | resolution: {integrity: sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==} 953 | engines: {node: '>= 10'} 954 | dependencies: 955 | crc-32: 1.2.2 956 | readable-stream: 3.6.2 957 | dev: true 958 | 959 | /create-ecdh@4.0.4: 960 | resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} 961 | dependencies: 962 | bn.js: 4.12.0 963 | elliptic: 6.5.4 964 | dev: true 965 | 966 | /create-hash@1.2.0: 967 | resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} 968 | dependencies: 969 | cipher-base: 1.0.4 970 | inherits: 2.0.4 971 | md5.js: 1.3.5 972 | ripemd160: 2.0.2 973 | sha.js: 2.4.11 974 | dev: true 975 | 976 | /create-hmac@1.1.7: 977 | resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} 978 | dependencies: 979 | cipher-base: 1.0.4 980 | create-hash: 1.2.0 981 | inherits: 2.0.4 982 | ripemd160: 2.0.2 983 | safe-buffer: 5.2.1 984 | sha.js: 2.4.11 985 | dev: true 986 | 987 | /crypto-browserify@3.12.0: 988 | resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} 989 | dependencies: 990 | browserify-cipher: 1.0.1 991 | browserify-sign: 4.2.1 992 | create-ecdh: 4.0.4 993 | create-hash: 1.2.0 994 | create-hmac: 1.1.7 995 | diffie-hellman: 5.0.3 996 | inherits: 2.0.4 997 | pbkdf2: 3.1.2 998 | public-encrypt: 4.0.3 999 | randombytes: 2.1.0 1000 | randomfill: 1.0.4 1001 | dev: true 1002 | 1003 | /dash-ast@1.0.0: 1004 | resolution: {integrity: sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==} 1005 | dev: true 1006 | 1007 | /debug@2.6.9: 1008 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1009 | peerDependencies: 1010 | supports-color: '*' 1011 | peerDependenciesMeta: 1012 | supports-color: 1013 | optional: true 1014 | dependencies: 1015 | ms: 2.0.0 1016 | dev: true 1017 | 1018 | /debug@4.3.4: 1019 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1020 | engines: {node: '>=6.0'} 1021 | peerDependencies: 1022 | supports-color: '*' 1023 | peerDependenciesMeta: 1024 | supports-color: 1025 | optional: true 1026 | dependencies: 1027 | ms: 2.1.2 1028 | dev: true 1029 | 1030 | /defined@1.0.1: 1031 | resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} 1032 | dev: true 1033 | 1034 | /delayed-stream@1.0.0: 1035 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 1036 | engines: {node: '>=0.4.0'} 1037 | dev: true 1038 | 1039 | /deps-sort@2.0.1: 1040 | resolution: {integrity: sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==} 1041 | hasBin: true 1042 | dependencies: 1043 | JSONStream: 1.3.5 1044 | shasum-object: 1.0.0 1045 | subarg: 1.0.0 1046 | through2: 2.0.5 1047 | dev: true 1048 | 1049 | /des.js@1.0.1: 1050 | resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} 1051 | dependencies: 1052 | inherits: 2.0.4 1053 | minimalistic-assert: 1.0.1 1054 | dev: true 1055 | 1056 | /detective@5.2.1: 1057 | resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} 1058 | engines: {node: '>=0.8.0'} 1059 | hasBin: true 1060 | dependencies: 1061 | acorn-node: 1.8.2 1062 | defined: 1.0.1 1063 | minimist: 1.2.8 1064 | dev: true 1065 | 1066 | /diffie-hellman@5.0.3: 1067 | resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} 1068 | dependencies: 1069 | bn.js: 4.12.0 1070 | miller-rabin: 4.0.1 1071 | randombytes: 2.1.0 1072 | dev: true 1073 | 1074 | /domain-browser@1.2.0: 1075 | resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} 1076 | engines: {node: '>=0.4', npm: '>=1.2'} 1077 | dev: true 1078 | 1079 | /duplexer2@0.1.4: 1080 | resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} 1081 | dependencies: 1082 | readable-stream: 2.3.8 1083 | dev: true 1084 | 1085 | /electron-to-chromium@1.4.400: 1086 | resolution: {integrity: sha512-Lsvf7cvwbIxCfB8VqbnVtEsjGi3+48ejDiQZfWo5gkT+1vQ2DHQI5pl0nUvPD6z1IQk6JgFeMC5ZQJqVhalEHg==} 1087 | dev: true 1088 | 1089 | /elliptic@6.5.4: 1090 | resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} 1091 | dependencies: 1092 | bn.js: 4.12.0 1093 | brorand: 1.1.0 1094 | hash.js: 1.1.7 1095 | hmac-drbg: 1.0.1 1096 | inherits: 2.0.4 1097 | minimalistic-assert: 1.0.1 1098 | minimalistic-crypto-utils: 1.0.1 1099 | dev: true 1100 | 1101 | /emoji-regex@8.0.0: 1102 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1103 | dev: true 1104 | 1105 | /end-of-stream@1.4.4: 1106 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 1107 | dependencies: 1108 | once: 1.4.0 1109 | dev: true 1110 | 1111 | /escalade@3.1.1: 1112 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1113 | engines: {node: '>=6'} 1114 | dev: true 1115 | 1116 | /escape-string-regexp@1.0.5: 1117 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1118 | engines: {node: '>=0.8.0'} 1119 | dev: true 1120 | 1121 | /esmify@2.1.1: 1122 | resolution: {integrity: sha512-GyOVgjG7sNyYB5Mbo15Ll4aGrcXZzZ3LI22rbLOjCI7L/wYelzQpBHRZkZkqbPNZ/QIRilcaHqzgNCLcEsi1lQ==} 1123 | dependencies: 1124 | '@babel/core': 7.21.8 1125 | '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.8) 1126 | '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.8) 1127 | '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.8) 1128 | '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.21.8) 1129 | babel-plugin-import-to-require: 1.0.0 1130 | cached-path-relative: 1.1.0 1131 | concat-stream: 1.6.2 1132 | duplexer2: 0.1.4 1133 | through2: 2.0.5 1134 | transitivePeerDependencies: 1135 | - supports-color 1136 | dev: true 1137 | 1138 | /esutils@2.0.3: 1139 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1140 | engines: {node: '>=0.10.0'} 1141 | dev: true 1142 | 1143 | /events@3.3.0: 1144 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 1145 | engines: {node: '>=0.8.x'} 1146 | dev: true 1147 | 1148 | /evp_bytestokey@1.0.3: 1149 | resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} 1150 | dependencies: 1151 | md5.js: 1.3.5 1152 | safe-buffer: 5.2.1 1153 | dev: true 1154 | 1155 | /exec-sh@0.2.2: 1156 | resolution: {integrity: sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==} 1157 | dependencies: 1158 | merge: 1.2.1 1159 | dev: false 1160 | 1161 | /fast-safe-stringify@2.1.1: 1162 | resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} 1163 | dev: true 1164 | 1165 | /for-each@0.3.3: 1166 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1167 | dependencies: 1168 | is-callable: 1.2.7 1169 | dev: true 1170 | 1171 | /form-data@3.0.1: 1172 | resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} 1173 | engines: {node: '>= 6'} 1174 | dependencies: 1175 | asynckit: 0.4.0 1176 | combined-stream: 1.0.8 1177 | mime-types: 2.1.35 1178 | dev: true 1179 | 1180 | /fs-constants@1.0.0: 1181 | resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} 1182 | dev: true 1183 | 1184 | /fs.realpath@1.0.0: 1185 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1186 | dev: true 1187 | 1188 | /function-bind@1.1.1: 1189 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1190 | dev: true 1191 | 1192 | /gensync@1.0.0-beta.2: 1193 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1194 | engines: {node: '>=6.9.0'} 1195 | dev: true 1196 | 1197 | /get-assigned-identifiers@1.2.0: 1198 | resolution: {integrity: sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==} 1199 | dev: true 1200 | 1201 | /get-caller-file@2.0.5: 1202 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1203 | engines: {node: 6.* || 8.* || >= 10.*} 1204 | dev: true 1205 | 1206 | /get-intrinsic@1.2.1: 1207 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} 1208 | dependencies: 1209 | function-bind: 1.1.1 1210 | has: 1.0.3 1211 | has-proto: 1.0.1 1212 | has-symbols: 1.0.3 1213 | dev: true 1214 | 1215 | /glob@7.2.3: 1216 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1217 | dependencies: 1218 | fs.realpath: 1.0.0 1219 | inflight: 1.0.6 1220 | inherits: 2.0.4 1221 | minimatch: 3.1.2 1222 | once: 1.4.0 1223 | path-is-absolute: 1.0.1 1224 | dev: true 1225 | 1226 | /globals@11.12.0: 1227 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1228 | engines: {node: '>=4'} 1229 | dev: true 1230 | 1231 | /globals@9.18.0: 1232 | resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==} 1233 | engines: {node: '>=0.10.0'} 1234 | dev: true 1235 | 1236 | /gopd@1.0.1: 1237 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1238 | dependencies: 1239 | get-intrinsic: 1.2.1 1240 | dev: true 1241 | 1242 | /graceful-fs@4.2.11: 1243 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1244 | dev: true 1245 | 1246 | /has-ansi@2.0.0: 1247 | resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} 1248 | engines: {node: '>=0.10.0'} 1249 | dependencies: 1250 | ansi-regex: 2.1.1 1251 | dev: true 1252 | 1253 | /has-flag@3.0.0: 1254 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1255 | engines: {node: '>=4'} 1256 | dev: true 1257 | 1258 | /has-proto@1.0.1: 1259 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1260 | engines: {node: '>= 0.4'} 1261 | dev: true 1262 | 1263 | /has-symbols@1.0.3: 1264 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1265 | engines: {node: '>= 0.4'} 1266 | dev: true 1267 | 1268 | /has-tostringtag@1.0.0: 1269 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1270 | engines: {node: '>= 0.4'} 1271 | dependencies: 1272 | has-symbols: 1.0.3 1273 | dev: true 1274 | 1275 | /has@1.0.3: 1276 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1277 | engines: {node: '>= 0.4.0'} 1278 | dependencies: 1279 | function-bind: 1.1.1 1280 | dev: true 1281 | 1282 | /hash-base@3.1.0: 1283 | resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} 1284 | engines: {node: '>=4'} 1285 | dependencies: 1286 | inherits: 2.0.4 1287 | readable-stream: 3.6.2 1288 | safe-buffer: 5.2.1 1289 | dev: true 1290 | 1291 | /hash.js@1.1.7: 1292 | resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} 1293 | dependencies: 1294 | inherits: 2.0.4 1295 | minimalistic-assert: 1.0.1 1296 | dev: true 1297 | 1298 | /hmac-drbg@1.0.1: 1299 | resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} 1300 | dependencies: 1301 | hash.js: 1.1.7 1302 | minimalistic-assert: 1.0.1 1303 | minimalistic-crypto-utils: 1.0.1 1304 | dev: true 1305 | 1306 | /htmlescape@1.1.1: 1307 | resolution: {integrity: sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==} 1308 | engines: {node: '>=0.10'} 1309 | dev: true 1310 | 1311 | /https-browserify@1.0.0: 1312 | resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} 1313 | dev: true 1314 | 1315 | /ieee754@1.2.1: 1316 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 1317 | 1318 | /inflight@1.0.6: 1319 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1320 | dependencies: 1321 | once: 1.4.0 1322 | wrappy: 1.0.2 1323 | dev: true 1324 | 1325 | /inherits@2.0.1: 1326 | resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==} 1327 | dev: true 1328 | 1329 | /inherits@2.0.4: 1330 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1331 | dev: true 1332 | 1333 | /inline-source-map@0.6.2: 1334 | resolution: {integrity: sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==} 1335 | dependencies: 1336 | source-map: 0.5.7 1337 | dev: true 1338 | 1339 | /insert-module-globals@7.2.1: 1340 | resolution: {integrity: sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==} 1341 | hasBin: true 1342 | dependencies: 1343 | JSONStream: 1.3.5 1344 | acorn-node: 1.8.2 1345 | combine-source-map: 0.8.0 1346 | concat-stream: 1.6.2 1347 | is-buffer: 1.1.6 1348 | path-is-absolute: 1.0.1 1349 | process: 0.11.10 1350 | through2: 2.0.5 1351 | undeclared-identifiers: 1.1.3 1352 | xtend: 4.0.2 1353 | dev: true 1354 | 1355 | /interpret@1.4.0: 1356 | resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} 1357 | engines: {node: '>= 0.10'} 1358 | dev: true 1359 | 1360 | /invariant@2.2.4: 1361 | resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} 1362 | dependencies: 1363 | loose-envify: 1.4.0 1364 | dev: true 1365 | 1366 | /is-arguments@1.1.1: 1367 | resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} 1368 | engines: {node: '>= 0.4'} 1369 | dependencies: 1370 | call-bind: 1.0.2 1371 | has-tostringtag: 1.0.0 1372 | dev: true 1373 | 1374 | /is-buffer@1.1.6: 1375 | resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} 1376 | dev: true 1377 | 1378 | /is-callable@1.2.7: 1379 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1380 | engines: {node: '>= 0.4'} 1381 | dev: true 1382 | 1383 | /is-core-module@2.12.1: 1384 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} 1385 | dependencies: 1386 | has: 1.0.3 1387 | dev: true 1388 | 1389 | /is-fullwidth-code-point@3.0.0: 1390 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1391 | engines: {node: '>=8'} 1392 | dev: true 1393 | 1394 | /is-generator-function@1.0.10: 1395 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} 1396 | engines: {node: '>= 0.4'} 1397 | dependencies: 1398 | has-tostringtag: 1.0.0 1399 | dev: true 1400 | 1401 | /is-typed-array@1.1.10: 1402 | resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} 1403 | engines: {node: '>= 0.4'} 1404 | dependencies: 1405 | available-typed-arrays: 1.0.5 1406 | call-bind: 1.0.2 1407 | for-each: 0.3.3 1408 | gopd: 1.0.1 1409 | has-tostringtag: 1.0.0 1410 | dev: true 1411 | 1412 | /isarray@1.0.0: 1413 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 1414 | dev: true 1415 | 1416 | /isexe@2.0.0: 1417 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1418 | dev: true 1419 | 1420 | /js-tokens@3.0.2: 1421 | resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} 1422 | dev: true 1423 | 1424 | /js-tokens@4.0.0: 1425 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1426 | dev: true 1427 | 1428 | /jsesc@2.5.2: 1429 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 1430 | engines: {node: '>=4'} 1431 | hasBin: true 1432 | dev: true 1433 | 1434 | /json5@2.2.3: 1435 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1436 | engines: {node: '>=6'} 1437 | hasBin: true 1438 | dev: true 1439 | 1440 | /jsonparse@1.3.1: 1441 | resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} 1442 | engines: {'0': node >= 0.2.0} 1443 | dev: true 1444 | 1445 | /labeled-stream-splicer@2.0.2: 1446 | resolution: {integrity: sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==} 1447 | dependencies: 1448 | inherits: 2.0.4 1449 | stream-splicer: 2.0.1 1450 | dev: true 1451 | 1452 | /lazystream@1.0.1: 1453 | resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} 1454 | engines: {node: '>= 0.6.3'} 1455 | dependencies: 1456 | readable-stream: 2.3.8 1457 | dev: true 1458 | 1459 | /lodash.defaults@4.2.0: 1460 | resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} 1461 | dev: true 1462 | 1463 | /lodash.difference@4.5.0: 1464 | resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} 1465 | dev: true 1466 | 1467 | /lodash.flatten@4.4.0: 1468 | resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} 1469 | dev: true 1470 | 1471 | /lodash.isplainobject@4.0.6: 1472 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 1473 | dev: true 1474 | 1475 | /lodash.memoize@3.0.4: 1476 | resolution: {integrity: sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==} 1477 | dev: true 1478 | 1479 | /lodash.union@4.6.0: 1480 | resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} 1481 | dev: true 1482 | 1483 | /lodash@4.17.21: 1484 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1485 | dev: true 1486 | 1487 | /loose-envify@1.4.0: 1488 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1489 | hasBin: true 1490 | dependencies: 1491 | js-tokens: 4.0.0 1492 | dev: true 1493 | 1494 | /lru-cache@5.1.1: 1495 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1496 | dependencies: 1497 | yallist: 3.1.1 1498 | dev: true 1499 | 1500 | /md5.js@1.3.5: 1501 | resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} 1502 | dependencies: 1503 | hash-base: 3.1.0 1504 | inherits: 2.0.4 1505 | safe-buffer: 5.2.1 1506 | dev: true 1507 | 1508 | /merge@1.2.1: 1509 | resolution: {integrity: sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==} 1510 | dev: false 1511 | 1512 | /miller-rabin@4.0.1: 1513 | resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} 1514 | hasBin: true 1515 | dependencies: 1516 | bn.js: 4.12.0 1517 | brorand: 1.1.0 1518 | dev: true 1519 | 1520 | /mime-db@1.52.0: 1521 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1522 | engines: {node: '>= 0.6'} 1523 | dev: true 1524 | 1525 | /mime-types@2.1.35: 1526 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1527 | engines: {node: '>= 0.6'} 1528 | dependencies: 1529 | mime-db: 1.52.0 1530 | dev: true 1531 | 1532 | /minimalistic-assert@1.0.1: 1533 | resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} 1534 | dev: true 1535 | 1536 | /minimalistic-crypto-utils@1.0.1: 1537 | resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} 1538 | dev: true 1539 | 1540 | /minimatch@3.1.2: 1541 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1542 | dependencies: 1543 | brace-expansion: 1.1.11 1544 | dev: true 1545 | 1546 | /minimatch@5.1.6: 1547 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 1548 | engines: {node: '>=10'} 1549 | dependencies: 1550 | brace-expansion: 2.0.1 1551 | dev: true 1552 | 1553 | /minimist@1.2.8: 1554 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1555 | 1556 | /mkdirp-classic@0.5.3: 1557 | resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} 1558 | dev: true 1559 | 1560 | /module-deps@6.2.3: 1561 | resolution: {integrity: sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==} 1562 | engines: {node: '>= 0.8.0'} 1563 | hasBin: true 1564 | dependencies: 1565 | JSONStream: 1.3.5 1566 | browser-resolve: 2.0.0 1567 | cached-path-relative: 1.1.0 1568 | concat-stream: 1.6.2 1569 | defined: 1.0.1 1570 | detective: 5.2.1 1571 | duplexer2: 0.1.4 1572 | inherits: 2.0.4 1573 | parents: 1.0.1 1574 | readable-stream: 2.3.8 1575 | resolve: 1.22.2 1576 | stream-combiner2: 1.1.1 1577 | subarg: 1.0.0 1578 | through2: 2.0.5 1579 | xtend: 4.0.2 1580 | dev: true 1581 | 1582 | /ms@2.0.0: 1583 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1584 | dev: true 1585 | 1586 | /ms@2.1.2: 1587 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1588 | dev: true 1589 | 1590 | /node-fetch@2.6.11: 1591 | resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} 1592 | engines: {node: 4.x || >=6.0.0} 1593 | peerDependencies: 1594 | encoding: ^0.1.0 1595 | peerDependenciesMeta: 1596 | encoding: 1597 | optional: true 1598 | dependencies: 1599 | whatwg-url: 5.0.0 1600 | dev: false 1601 | 1602 | /node-releases@2.0.10: 1603 | resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} 1604 | dev: true 1605 | 1606 | /normalize-path@3.0.0: 1607 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1608 | engines: {node: '>=0.10.0'} 1609 | dev: true 1610 | 1611 | /object-assign@4.1.1: 1612 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1613 | engines: {node: '>=0.10.0'} 1614 | dev: true 1615 | 1616 | /once@1.4.0: 1617 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1618 | dependencies: 1619 | wrappy: 1.0.2 1620 | dev: true 1621 | 1622 | /os-browserify@0.3.0: 1623 | resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} 1624 | dev: true 1625 | 1626 | /pako@1.0.11: 1627 | resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} 1628 | dev: true 1629 | 1630 | /parents@1.0.1: 1631 | resolution: {integrity: sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==} 1632 | dependencies: 1633 | path-platform: 0.11.15 1634 | dev: true 1635 | 1636 | /parse-asn1@5.1.6: 1637 | resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} 1638 | dependencies: 1639 | asn1.js: 5.4.1 1640 | browserify-aes: 1.2.0 1641 | evp_bytestokey: 1.0.3 1642 | pbkdf2: 3.1.2 1643 | safe-buffer: 5.2.1 1644 | dev: true 1645 | 1646 | /path-browserify@1.0.1: 1647 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 1648 | dev: true 1649 | 1650 | /path-is-absolute@1.0.1: 1651 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1652 | engines: {node: '>=0.10.0'} 1653 | dev: true 1654 | 1655 | /path-parse@1.0.7: 1656 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1657 | dev: true 1658 | 1659 | /path-platform@0.11.15: 1660 | resolution: {integrity: sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==} 1661 | engines: {node: '>= 0.8.0'} 1662 | dev: true 1663 | 1664 | /pbkdf2@3.1.2: 1665 | resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} 1666 | engines: {node: '>=0.12'} 1667 | dependencies: 1668 | create-hash: 1.2.0 1669 | create-hmac: 1.1.7 1670 | ripemd160: 2.0.2 1671 | safe-buffer: 5.2.1 1672 | sha.js: 2.4.11 1673 | dev: true 1674 | 1675 | /picocolors@1.0.0: 1676 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1677 | dev: true 1678 | 1679 | /process-nextick-args@2.0.1: 1680 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 1681 | dev: true 1682 | 1683 | /process@0.11.10: 1684 | resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 1685 | engines: {node: '>= 0.6.0'} 1686 | dev: true 1687 | 1688 | /public-encrypt@4.0.3: 1689 | resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} 1690 | dependencies: 1691 | bn.js: 4.12.0 1692 | browserify-rsa: 4.1.0 1693 | create-hash: 1.2.0 1694 | parse-asn1: 5.1.6 1695 | randombytes: 2.1.0 1696 | safe-buffer: 5.2.1 1697 | dev: true 1698 | 1699 | /punycode@1.3.2: 1700 | resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} 1701 | dev: true 1702 | 1703 | /punycode@1.4.1: 1704 | resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} 1705 | dev: true 1706 | 1707 | /querystring-es3@0.2.1: 1708 | resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} 1709 | engines: {node: '>=0.4.x'} 1710 | dev: true 1711 | 1712 | /querystring@0.2.0: 1713 | resolution: {integrity: sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=} 1714 | engines: {node: '>=0.4.x'} 1715 | deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. 1716 | dev: true 1717 | 1718 | /randombytes@2.1.0: 1719 | resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} 1720 | dependencies: 1721 | safe-buffer: 5.2.1 1722 | dev: true 1723 | 1724 | /randomfill@1.0.4: 1725 | resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} 1726 | dependencies: 1727 | randombytes: 2.1.0 1728 | safe-buffer: 5.2.1 1729 | dev: true 1730 | 1731 | /read-only-stream@2.0.0: 1732 | resolution: {integrity: sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==} 1733 | dependencies: 1734 | readable-stream: 2.3.8 1735 | dev: true 1736 | 1737 | /readable-stream@2.3.8: 1738 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} 1739 | dependencies: 1740 | core-util-is: 1.0.3 1741 | inherits: 2.0.4 1742 | isarray: 1.0.0 1743 | process-nextick-args: 2.0.1 1744 | safe-buffer: 5.1.2 1745 | string_decoder: 1.1.1 1746 | util-deprecate: 1.0.2 1747 | dev: true 1748 | 1749 | /readable-stream@3.6.2: 1750 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 1751 | engines: {node: '>= 6'} 1752 | dependencies: 1753 | inherits: 2.0.4 1754 | string_decoder: 1.3.0 1755 | util-deprecate: 1.0.2 1756 | dev: true 1757 | 1758 | /readdir-glob@1.1.3: 1759 | resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} 1760 | dependencies: 1761 | minimatch: 5.1.6 1762 | dev: true 1763 | 1764 | /rechoir@0.6.2: 1765 | resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} 1766 | engines: {node: '>= 0.10'} 1767 | dependencies: 1768 | resolve: 1.22.2 1769 | dev: true 1770 | 1771 | /regenerator-runtime@0.11.1: 1772 | resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} 1773 | dev: true 1774 | 1775 | /require-directory@2.1.1: 1776 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1777 | engines: {node: '>=0.10.0'} 1778 | dev: true 1779 | 1780 | /resolve@1.22.2: 1781 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 1782 | hasBin: true 1783 | dependencies: 1784 | is-core-module: 2.12.1 1785 | path-parse: 1.0.7 1786 | supports-preserve-symlinks-flag: 1.0.0 1787 | dev: true 1788 | 1789 | /ripemd160@2.0.2: 1790 | resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} 1791 | dependencies: 1792 | hash-base: 3.1.0 1793 | inherits: 2.0.4 1794 | dev: true 1795 | 1796 | /safe-buffer@5.1.2: 1797 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 1798 | dev: true 1799 | 1800 | /safe-buffer@5.2.1: 1801 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1802 | dev: true 1803 | 1804 | /safer-buffer@2.1.2: 1805 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1806 | dev: true 1807 | 1808 | /semver@6.3.0: 1809 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1810 | hasBin: true 1811 | dev: true 1812 | 1813 | /sha.js@2.4.11: 1814 | resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} 1815 | hasBin: true 1816 | dependencies: 1817 | inherits: 2.0.4 1818 | safe-buffer: 5.2.1 1819 | dev: true 1820 | 1821 | /shasum-object@1.0.0: 1822 | resolution: {integrity: sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==} 1823 | dependencies: 1824 | fast-safe-stringify: 2.1.1 1825 | dev: true 1826 | 1827 | /shell-quote@1.8.1: 1828 | resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} 1829 | dev: true 1830 | 1831 | /shelljs@0.8.5: 1832 | resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} 1833 | engines: {node: '>=4'} 1834 | hasBin: true 1835 | dependencies: 1836 | glob: 7.2.3 1837 | interpret: 1.4.0 1838 | rechoir: 0.6.2 1839 | dev: true 1840 | 1841 | /shx@0.3.4: 1842 | resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} 1843 | engines: {node: '>=6'} 1844 | hasBin: true 1845 | dependencies: 1846 | minimist: 1.2.8 1847 | shelljs: 0.8.5 1848 | dev: true 1849 | 1850 | /simple-concat@1.0.1: 1851 | resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} 1852 | dev: true 1853 | 1854 | /source-map-support@0.5.21: 1855 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1856 | dependencies: 1857 | buffer-from: 1.1.2 1858 | source-map: 0.6.1 1859 | dev: true 1860 | 1861 | /source-map@0.5.7: 1862 | resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} 1863 | engines: {node: '>=0.10.0'} 1864 | dev: true 1865 | 1866 | /source-map@0.6.1: 1867 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1868 | engines: {node: '>=0.10.0'} 1869 | dev: true 1870 | 1871 | /stream-browserify@3.0.0: 1872 | resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} 1873 | dependencies: 1874 | inherits: 2.0.4 1875 | readable-stream: 3.6.2 1876 | dev: true 1877 | 1878 | /stream-combiner2@1.1.1: 1879 | resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} 1880 | dependencies: 1881 | duplexer2: 0.1.4 1882 | readable-stream: 2.3.8 1883 | dev: true 1884 | 1885 | /stream-http@3.2.0: 1886 | resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} 1887 | dependencies: 1888 | builtin-status-codes: 3.0.0 1889 | inherits: 2.0.4 1890 | readable-stream: 3.6.2 1891 | xtend: 4.0.2 1892 | dev: true 1893 | 1894 | /stream-splicer@2.0.1: 1895 | resolution: {integrity: sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==} 1896 | dependencies: 1897 | inherits: 2.0.4 1898 | readable-stream: 2.3.8 1899 | dev: true 1900 | 1901 | /string-width@4.2.3: 1902 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1903 | engines: {node: '>=8'} 1904 | dependencies: 1905 | emoji-regex: 8.0.0 1906 | is-fullwidth-code-point: 3.0.0 1907 | strip-ansi: 6.0.1 1908 | dev: true 1909 | 1910 | /string_decoder@1.1.1: 1911 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 1912 | dependencies: 1913 | safe-buffer: 5.1.2 1914 | dev: true 1915 | 1916 | /string_decoder@1.3.0: 1917 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1918 | dependencies: 1919 | safe-buffer: 5.2.1 1920 | dev: true 1921 | 1922 | /strip-ansi@3.0.1: 1923 | resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} 1924 | engines: {node: '>=0.10.0'} 1925 | dependencies: 1926 | ansi-regex: 2.1.1 1927 | dev: true 1928 | 1929 | /strip-ansi@6.0.1: 1930 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1931 | engines: {node: '>=8'} 1932 | dependencies: 1933 | ansi-regex: 5.0.1 1934 | dev: true 1935 | 1936 | /subarg@1.0.0: 1937 | resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} 1938 | dependencies: 1939 | minimist: 1.2.8 1940 | dev: true 1941 | 1942 | /supports-color@2.0.0: 1943 | resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} 1944 | engines: {node: '>=0.8.0'} 1945 | dev: true 1946 | 1947 | /supports-color@5.5.0: 1948 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1949 | engines: {node: '>=4'} 1950 | dependencies: 1951 | has-flag: 3.0.0 1952 | dev: true 1953 | 1954 | /supports-preserve-symlinks-flag@1.0.0: 1955 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1956 | engines: {node: '>= 0.4'} 1957 | dev: true 1958 | 1959 | /sync-fetch@0.4.2: 1960 | resolution: {integrity: sha512-vilDD6yTGwyUjm7/W5WUUOCw1GH1aV591zC21XhbV6MJNZqfZcNMs9DVPHzy1UAmQ2GAg6S03F5TQ3paegKSdg==} 1961 | engines: {node: '>=14'} 1962 | dependencies: 1963 | buffer: 5.7.1 1964 | node-fetch: 2.6.11 1965 | transitivePeerDependencies: 1966 | - encoding 1967 | dev: false 1968 | 1969 | /syntax-error@1.4.0: 1970 | resolution: {integrity: sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==} 1971 | dependencies: 1972 | acorn-node: 1.8.2 1973 | dev: true 1974 | 1975 | /tar-stream@2.2.0: 1976 | resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} 1977 | engines: {node: '>=6'} 1978 | dependencies: 1979 | bl: 4.1.0 1980 | end-of-stream: 1.4.4 1981 | fs-constants: 1.0.0 1982 | inherits: 2.0.4 1983 | readable-stream: 3.6.2 1984 | dev: true 1985 | 1986 | /terser@5.17.4: 1987 | resolution: {integrity: sha512-jcEKZw6UPrgugz/0Tuk/PVyLAPfMBJf5clnGueo45wTweoV8yh7Q7PEkhkJ5uuUbC7zAxEcG3tqNr1bstkQ8nw==} 1988 | engines: {node: '>=10'} 1989 | hasBin: true 1990 | dependencies: 1991 | '@jridgewell/source-map': 0.3.3 1992 | acorn: 8.8.2 1993 | commander: 2.20.3 1994 | source-map-support: 0.5.21 1995 | dev: true 1996 | 1997 | /through2@2.0.5: 1998 | resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} 1999 | dependencies: 2000 | readable-stream: 2.3.8 2001 | xtend: 4.0.2 2002 | dev: true 2003 | 2004 | /through@2.3.8: 2005 | resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} 2006 | dev: true 2007 | 2008 | /timers-browserify@1.4.2: 2009 | resolution: {integrity: sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==} 2010 | engines: {node: '>=0.6.0'} 2011 | dependencies: 2012 | process: 0.11.10 2013 | dev: true 2014 | 2015 | /to-fast-properties@1.0.3: 2016 | resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} 2017 | engines: {node: '>=0.10.0'} 2018 | dev: true 2019 | 2020 | /to-fast-properties@2.0.0: 2021 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2022 | engines: {node: '>=4'} 2023 | dev: true 2024 | 2025 | /toastify-js@1.12.0: 2026 | resolution: {integrity: sha512-HeMHCO9yLPvP9k0apGSdPUWrUbLnxUKNFzgUoZp1PHCLploIX/4DSQ7V8H25ef+h4iO9n0he7ImfcndnN6nDrQ==} 2027 | dev: false 2028 | 2029 | /toggle-selection@1.0.6: 2030 | resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} 2031 | dev: false 2032 | 2033 | /tr46@0.0.3: 2034 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 2035 | dev: false 2036 | 2037 | /tty-browserify@0.0.1: 2038 | resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} 2039 | dev: true 2040 | 2041 | /typedarray@0.0.6: 2042 | resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} 2043 | dev: true 2044 | 2045 | /typescript@5.0.4: 2046 | resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} 2047 | engines: {node: '>=12.20'} 2048 | hasBin: true 2049 | dev: true 2050 | 2051 | /umd@3.0.3: 2052 | resolution: {integrity: sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==} 2053 | hasBin: true 2054 | dev: true 2055 | 2056 | /undeclared-identifiers@1.1.3: 2057 | resolution: {integrity: sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==} 2058 | hasBin: true 2059 | dependencies: 2060 | acorn-node: 1.8.2 2061 | dash-ast: 1.0.0 2062 | get-assigned-identifiers: 1.2.0 2063 | simple-concat: 1.0.1 2064 | xtend: 4.0.2 2065 | dev: true 2066 | 2067 | /update-browserslist-db@1.0.11(browserslist@4.21.5): 2068 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} 2069 | hasBin: true 2070 | peerDependencies: 2071 | browserslist: '>= 4.21.0' 2072 | dependencies: 2073 | browserslist: 4.21.5 2074 | escalade: 3.1.1 2075 | picocolors: 1.0.0 2076 | dev: true 2077 | 2078 | /url@0.11.0: 2079 | resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==} 2080 | dependencies: 2081 | punycode: 1.3.2 2082 | querystring: 0.2.0 2083 | dev: true 2084 | 2085 | /util-deprecate@1.0.2: 2086 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2087 | dev: true 2088 | 2089 | /util@0.10.3: 2090 | resolution: {integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==} 2091 | dependencies: 2092 | inherits: 2.0.1 2093 | dev: true 2094 | 2095 | /util@0.12.5: 2096 | resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} 2097 | dependencies: 2098 | inherits: 2.0.4 2099 | is-arguments: 1.1.1 2100 | is-generator-function: 1.0.10 2101 | is-typed-array: 1.1.10 2102 | which-typed-array: 1.1.9 2103 | dev: true 2104 | 2105 | /vm-browserify@1.1.2: 2106 | resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} 2107 | dev: true 2108 | 2109 | /watch@1.0.2: 2110 | resolution: {integrity: sha512-1u+Z5n9Jc1E2c7qDO8SinPoZuHj7FgbgU1olSFoyaklduDvvtX7GMMtlE6OC9FTXq4KvNAOfj6Zu4vI1e9bAKA==} 2111 | engines: {node: '>=0.1.95'} 2112 | hasBin: true 2113 | dependencies: 2114 | exec-sh: 0.2.2 2115 | minimist: 1.2.8 2116 | dev: false 2117 | 2118 | /webidl-conversions@3.0.1: 2119 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 2120 | dev: false 2121 | 2122 | /whatwg-url@5.0.0: 2123 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 2124 | dependencies: 2125 | tr46: 0.0.3 2126 | webidl-conversions: 3.0.1 2127 | dev: false 2128 | 2129 | /which-typed-array@1.1.9: 2130 | resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} 2131 | engines: {node: '>= 0.4'} 2132 | dependencies: 2133 | available-typed-arrays: 1.0.5 2134 | call-bind: 1.0.2 2135 | for-each: 0.3.3 2136 | gopd: 1.0.1 2137 | has-tostringtag: 1.0.0 2138 | is-typed-array: 1.1.10 2139 | dev: true 2140 | 2141 | /which@2.0.2: 2142 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2143 | engines: {node: '>= 8'} 2144 | hasBin: true 2145 | dependencies: 2146 | isexe: 2.0.0 2147 | dev: true 2148 | 2149 | /wrap-ansi@7.0.0: 2150 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2151 | engines: {node: '>=10'} 2152 | dependencies: 2153 | ansi-styles: 4.3.0 2154 | string-width: 4.2.3 2155 | strip-ansi: 6.0.1 2156 | dev: true 2157 | 2158 | /wrappy@1.0.2: 2159 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2160 | dev: true 2161 | 2162 | /xtend@4.0.2: 2163 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 2164 | engines: {node: '>=0.4'} 2165 | dev: true 2166 | 2167 | /y18n@5.0.8: 2168 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 2169 | engines: {node: '>=10'} 2170 | dev: true 2171 | 2172 | /yallist@3.1.1: 2173 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 2174 | dev: true 2175 | 2176 | /yargs-parser@20.2.9: 2177 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 2178 | engines: {node: '>=10'} 2179 | dev: true 2180 | 2181 | /yargs@16.2.0: 2182 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} 2183 | engines: {node: '>=10'} 2184 | dependencies: 2185 | cliui: 7.0.4 2186 | escalade: 3.1.1 2187 | get-caller-file: 2.0.5 2188 | require-directory: 2.1.1 2189 | string-width: 4.2.3 2190 | y18n: 5.0.8 2191 | yargs-parser: 20.2.9 2192 | dev: true 2193 | 2194 | /zip-stream@4.1.0: 2195 | resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} 2196 | engines: {node: '>= 10'} 2197 | dependencies: 2198 | archiver-utils: 2.1.0 2199 | compress-commons: 4.1.1 2200 | readable-stream: 3.6.2 2201 | dev: true 2202 | -------------------------------------------------------------------------------- /src/arrows.ts: -------------------------------------------------------------------------------- 1 | import { moveArrowHeads } from "./util.js" 2 | 3 | const marker = ` 4 | 13 | 14 | 15 | ` 16 | 17 | const notationToCoords = (notation: string): [number, number] => { 18 | const [file, rank] = notation 19 | const x = (file.charCodeAt(0) - 97) * 12.5 + 6.25 20 | const y = (8 - parseInt(rank)) * 12.5 + 6.25 21 | 22 | const color = document.getElementById("cc-current-color").innerText === "White" 23 | return color ? [x, y] : flipCoords([x, y]) 24 | } 25 | 26 | const flipCoords = ([x, y]: [number, number]): [number, number] => [100 - x, 100 - y] 27 | 28 | export const createArrow = (_start: string, _end: string, opacity: number) => { 29 | if (!arrows) return 30 | const [start, end] = moveArrowHeads(notationToCoords(_start), notationToCoords(_end), 5, 2.5) 31 | const arrow = arrows.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "line")) 32 | 33 | arrow.setAttribute("opacity", `${opacity}`) 34 | arrow.setAttribute("marker-end", "url(#arrow)") 35 | arrow.setAttribute("stroke-width", "2") 36 | arrow.setAttribute("stroke", "black") 37 | arrow.setAttribute("x1", `${start[0]}`) 38 | arrow.setAttribute("y1", `${start[1]}`) 39 | arrow.setAttribute("x2", `${end[0]}`) 40 | arrow.setAttribute("y2", `${end[1]}`) 41 | } 42 | 43 | export const clearArrows = () => { 44 | if (!arrows) return 45 | for (const child of Array.from(arrows.children)) { 46 | if (child.tagName !== "defs") child.remove() 47 | } 48 | } 49 | 50 | export const hideArrows = () => { 51 | if (!arrows) return 52 | arrows.style.display = "none" 53 | } 54 | 55 | export const showArrows = () => { 56 | if (!arrows) return 57 | arrows.style.display = "block" 58 | } 59 | 60 | let arrows: SVGElement = null 61 | export const loadArrows = () => { 62 | if (arrows) { 63 | clearArrows() 64 | return 65 | } 66 | 67 | arrows = document.createElementNS("http://www.w3.org/2000/svg", "svg") 68 | arrows.setAttribute("viewBox", "0 0 100 100") 69 | 70 | const defs = arrows.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "defs")) 71 | defs.innerHTML = marker 72 | 73 | const chessBoard = document.querySelector("chess-board") 74 | if (!chessBoard) throw new Error("No chess board found") 75 | chessBoard.appendChild(arrows) 76 | } 77 | -------------------------------------------------------------------------------- /src/background.ts: -------------------------------------------------------------------------------- 1 | chrome.runtime.onMessage.addListener((request, _, callback) => { 2 | if (request.id == "fetchData") { 3 | const url = request.url 4 | fetch(url, { 5 | headers: { 6 | "Content-Type": "application/x-www-form-urlencoded", 7 | }, 8 | }) 9 | .then((response) => response.json()) 10 | .then((response) => callback({ error: null, response })) 11 | .catch((error) => callback({ error, response: null })) 12 | return true 13 | } 14 | }) 15 | -------------------------------------------------------------------------------- /src/content.ts: -------------------------------------------------------------------------------- 1 | import { Chess } from "chess.js" 2 | import { engine } from "./engine.js" 3 | import { loadPopup } from "./popup.js" 4 | import { checkVersion } from "./version.js" 5 | 6 | export const getMoveCount = () => document.querySelectorAll("div[data-ply]:not(.time-white):not(.time-black)").length 7 | 8 | export const getFen = () => { 9 | let fen_string = "" 10 | for (var y = 8; y >= 1; y--) { 11 | for (var x = 1; x <= 8; x++) { 12 | if (x == 1 && y != 8) fen_string += "/" 13 | 14 | let piece: string = null 15 | const position = `${x}${y}` 16 | 17 | const classes = document.querySelectorAll(`.piece.square-${position}`)[0]?.classList ?? null 18 | if (classes !== null) { 19 | for (var item of (classes as any).values() as string[]) { 20 | if (item.length == 2) { 21 | piece = item 22 | } 23 | } 24 | } 25 | 26 | if (piece === null) { 27 | let previous_char = fen_string.split("").pop() 28 | if (!isNaN(Number(previous_char))) { 29 | fen_string = fen_string.substring(0, fen_string.length - 1) 30 | fen_string += Number(previous_char) + 1 31 | } else { 32 | fen_string += "1" 33 | } 34 | } else if (piece.split("")[0] === "b") { 35 | fen_string += piece.split("")[1] 36 | } else if (piece.split("")[0] === "w") { 37 | fen_string += piece.split("")[1].toUpperCase() 38 | } 39 | } 40 | } 41 | 42 | const turn = getMoveCount() % 2 === 0 ? "w" : "b" 43 | return `${fen_string} ${turn}` 44 | } 45 | 46 | const getMoves = () => { 47 | const moves = [] 48 | const moveDivs = document.querySelectorAll("div[data-ply]:not(.time-white):not(.time-black)") 49 | for (const moveDiv of Array.from(moveDivs)) { 50 | const piece = moveDiv.children[0]?.getAttribute("data-figurine") ?? "" 51 | const mv = moveDiv.textContent 52 | moves.push(mv.endsWith("=") ? mv + piece : piece + mv) 53 | } 54 | return moves.join(" ") 55 | } 56 | 57 | export const getChess = (forcedGamemode: string = null) => { 58 | const gamemode = (forcedGamemode ?? (document.getElementById("cc-current-gamemode") as HTMLSpanElement).innerText) === "Standard" 59 | 60 | const moves = gamemode ? getMoves() : getFen() 61 | if (moves.length === 0) throw new Error("No game found") 62 | 63 | const chess = new Chess() 64 | try { 65 | if (!gamemode) chess.load(moves) 66 | else chess.loadPgn(moves) 67 | return chess 68 | } catch { 69 | if (gamemode) { 70 | const chess2 = new Chess() 71 | try { 72 | chess2.load(getFen()) 73 | return chess2 74 | } catch { 75 | throw new Error("No game found") 76 | } 77 | } 78 | throw new Error("No game found") 79 | } 80 | } 81 | 82 | console.log( 83 | " %chttps://github.com/jameslinimk/chess-com-cheater%c - by Linimik\n" + "%c♔ Chess.com cheats initialized ♕", 84 | "text-decoration: underline; color: gray; background: #222", 85 | "color: white; background: #222", 86 | "color: green; background: #222; font-size: 250%", 87 | ) 88 | checkVersion() 89 | engine 90 | 91 | // Toastify css 92 | const css = document.head.appendChild(document.createElement("link")) 93 | css.rel = "stylesheet" 94 | css.type = "text/css" 95 | css.href = "https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css" 96 | 97 | loadPopup() 98 | -------------------------------------------------------------------------------- /src/engine.ts: -------------------------------------------------------------------------------- 1 | import type { Chess } from "chess.js" 2 | import { loadArrows } from "./arrows.js" 3 | import { getChess, getMoveCount } from "./content.js" 4 | import { cloudEval } from "./lichess.js" 5 | import type { Config } from "./types.js" 6 | import { colorLog } from "./util.js" 7 | import { retrieveWindowVariable } from "./util_firefox.js" 8 | 9 | const config: Config = retrieveWindowVariable("Config") 10 | if (!config) colorLog("red", "Config not found, reverting to default engine worker path...") 11 | 12 | const singleEngine = config.threadedEnginePaths.stockfish.singleThreaded.loader + "#" + config.threadedEnginePaths.stockfish.singleThreaded.engine 13 | const asmEngine = config.threadedEnginePaths.stockfish.asm 14 | 15 | const path = () => { 16 | const selected = document.getElementById("cc-current-engine") as HTMLSpanElement 17 | if (selected?.textContent === "ASM") return asmEngine 18 | return singleEngine 19 | } 20 | 21 | export let engine: Worker = null 22 | let maxDepth: number = null 23 | export const setMaxDepth = (depth: number) => (maxDepth = depth) 24 | let multilines: number = null 25 | export const setMultilines = (lines: number) => { 26 | multilines = lines 27 | engine?.postMessage(`setoption name MultiPV value ${multilines}`) 28 | } 29 | 30 | export const updateEngine = () => { 31 | engine?.terminate() 32 | engine = new Worker(path()) 33 | } 34 | 35 | export interface Line { 36 | moves: string[] 37 | evaluation: string 38 | } 39 | 40 | interface Info { 41 | game: Chess 42 | depth: number 43 | evaluation: string 44 | lines: [Line, Line, Line, Line, Line] 45 | cloud: boolean 46 | } 47 | 48 | const defaultLines = '[{"moves":[],"evaluation":""},{"moves":[],"evaluation":""},{"moves":[],"evaluation":""},{"moves":[],"evaluation":""},{"moves":[],"evaluation":""}]' 49 | 50 | export const info = { 51 | game: null, 52 | depth: 0, 53 | evaluation: "", 54 | lines: JSON.parse(defaultLines), 55 | cloud: false, 56 | } as Info 57 | 58 | let lastMoves = -1 59 | let checker = null 60 | 61 | const calcEval = (obj: { cp?: number; mate?: number }) => (!obj.mate ? `${obj.cp / 100}` : `M${obj.mate}`) 62 | 63 | export const startEval = async (chess: Chess, callback: () => unknown) => { 64 | updateEngine() 65 | loadArrows() 66 | 67 | info.lines = JSON.parse(defaultLines) 68 | info.game = chess 69 | info.cloud = false 70 | 71 | lastMoves = getMoveCount() 72 | const fen = chess.fen() 73 | 74 | checker = setInterval(() => { 75 | const curMoves = getMoveCount() 76 | if (curMoves !== lastMoves) { 77 | lastMoves = curMoves 78 | startEval(getChess(), callback) 79 | } 80 | }) 81 | 82 | engine.postMessage(`setoption name MultiPV value ${multilines}`) 83 | engine.postMessage(`position fen ${fen}`) 84 | engine.postMessage("go infinite") 85 | 86 | const cloud = await cloudEval(fen, multilines) 87 | if (cloud && cloud.depth <= (maxDepth === -1 ? 100 : maxDepth)) { 88 | info.cloud = true 89 | info.depth = cloud.depth 90 | info.evaluation = calcEval(cloud.pvs[0]) 91 | info.lines = cloud.pvs.map((pv) => ({ 92 | moves: pv.moves.split(" "), 93 | evaluation: calcEval(pv), 94 | })) as [Line, Line, Line, Line, Line] 95 | 96 | callback() 97 | return 98 | } 99 | 100 | engine.onmessage = (msg) => { 101 | const data = parseUci(msg.data) 102 | if (data.command !== "info") return 103 | 104 | const ml = parseInt(data.args["multipv"]) 105 | const depth = parseInt(data.args["depth"]) 106 | const mvs = data.args["pv"]?.split(" ") 107 | const cp = parseInt(data.args["cp"]) / 100 108 | const mate = data.args["mate"] 109 | const evaluation = !mate ? (chess.turn() === "w" ? `${cp}` : `${-cp}`) : chess.turn() === "w" ? `M${mate}` : `M${-mate}` 110 | if (!ml || !mvs) return 111 | 112 | info.depth = depth 113 | if (ml === 1) info.evaluation = evaluation 114 | if (ml <= multilines) { 115 | info.lines[ml - 1].evaluation = evaluation 116 | info.lines[ml - 1].moves = mvs 117 | } 118 | 119 | if (maxDepth !== -1 && depth >= maxDepth) { 120 | engine.postMessage("stop") 121 | callback() 122 | } 123 | 124 | callback() 125 | } 126 | } 127 | 128 | export const stopEval = (callback: () => unknown) => { 129 | clearInterval(checker) 130 | updateEngine() 131 | callback() 132 | } 133 | 134 | type UciCommands = "id" | "uciok" | "readyok" | "copyprotection" | "registration" | "option" | "info" | "bestmove" | "Stockfish.js" | "Stockfish" 135 | const uciInfo: Record = { 136 | id: ["name", "author"], 137 | uciok: [], 138 | readyok: [], 139 | copyprotection: ["main"], 140 | registration: ["main"], 141 | option: ["name", "type", "default", "min", "max", "var"], 142 | info: [ 143 | "depth", 144 | "seldepth", 145 | "time", 146 | "nodes", 147 | "pv", 148 | "multipv", 149 | "score", 150 | "cp", 151 | "mate", 152 | "lowerbound", 153 | "upperbound", 154 | "currmove", 155 | "currmovenumber", 156 | "hashfull", 157 | "nps", 158 | "tbhits", 159 | "sbhits", 160 | "cpuload", 161 | "string", 162 | "refutation", 163 | "currline", 164 | "bmc", 165 | ], 166 | bestmove: ["main", "ponder"], 167 | "Stockfish.js": [], 168 | Stockfish: [], 169 | } 170 | 171 | const parseUci = (uci: string) => { 172 | const command = uci.split(" ")[0] as UciCommands 173 | const args = uci.split(" ").slice(1) 174 | 175 | const info = uciInfo[command] 176 | if (!info) throw new Error(`Unknown UCI command: ${uci}`) 177 | if (info.length === 0) return { command, args: {} } 178 | const formattedArgs: Record = {} 179 | 180 | if (info.includes("main")) { 181 | formattedArgs["main"] = args[0] 182 | args.shift() 183 | } 184 | 185 | let data = "" 186 | let lastArg = "" 187 | for (const arg of args) { 188 | if (arg !== "main" && info.includes(arg)) { 189 | if (lastArg) formattedArgs[lastArg] = data.trimEnd() 190 | lastArg = arg 191 | data = "" 192 | continue 193 | } 194 | 195 | data += arg + " " 196 | } 197 | 198 | if (lastArg) formattedArgs[lastArg] = data.trimEnd() 199 | 200 | return { command, args: formattedArgs } 201 | } 202 | -------------------------------------------------------------------------------- /src/lichess.ts: -------------------------------------------------------------------------------- 1 | const baseUrl = "https://lichess.org/api" 2 | 3 | export interface CloudEval { 4 | fen: string 5 | knodes: number 6 | depth: number 7 | pvs: PV[] 8 | } 9 | 10 | export interface PV { 11 | moves: string 12 | cp?: number 13 | mate?: number 14 | } 15 | 16 | export const cloudEval = (fen: string, multilines: number): Promise => 17 | new Promise((resolve) => { 18 | chrome.runtime.sendMessage( 19 | { 20 | id: "fetchData", 21 | url: `${baseUrl}/cloud-eval?fen=${fen}&multiPv=${multilines}`, 22 | }, 23 | (response) => { 24 | if (response?.error || "error" in response.response) resolve(null) 25 | resolve(response.response as CloudEval) 26 | }, 27 | ) 28 | }) 29 | -------------------------------------------------------------------------------- /src/popup.ts: -------------------------------------------------------------------------------- 1 | import type { Chess } from "chess.js" 2 | import copy from "copy-to-clipboard" 3 | import { clearArrows, createArrow, hideArrows, showArrows } from "./arrows.js" 4 | import { getChess } from "./content.js" 5 | import { info, setMaxDepth, setMultilines, startEval, stopEval, updateEngine } from "./engine.js" 6 | import { toast } from "./util.js" 7 | 8 | const inactiveColor = "#7286D3" 9 | const activeColor = "#D2001A" 10 | 11 | const html = ` 12 |
13 |
14 |
15 |

Cheat menu

16 |

Hide with shift+a

17 | 18 | Game mode: Single 19 |
20 | 23 | 26 | 27 |
28 | 29 | Current engine: Single 30 |
31 | 34 | 37 | 38 |
39 | 40 | Current color: White 41 |
42 | 45 | 48 | 49 |
50 | 51 | Multi lines: 3 52 | 53 | 54 | 55 |
56 | 57 |
58 | Max depth: 59 | 60 |
61 | 62 |
63 | 64 | 65 | 66 |
67 |
68 | 69 | Best move: N/A
70 | Eval (for white): 0
71 | Depth: 0 72 | 73 |
74 |
75 | 76 | 79 | 82 |
83 |
84 | 87 |
88 |
89 |
90 | ` 91 | 92 | const css = ` 93 | .cc-parent { 94 | display: flex; 95 | flex-direction: column; 96 | position: fixed; 97 | top: 100px; 98 | left: 50px; 99 | box-shadow: 0 10px 16px 0 rgba(0, 0, 0, 0.2),0 6px 20px 0 rgba(0, 0, 0, 0.19); 100 | z-index: 2147483647; 101 | width: 231px; 102 | } 103 | 104 | .cc-dragger { 105 | height: 20px; 106 | background-color: #A59D95; 107 | cursor: grab; 108 | } 109 | 110 | .cc-content { 111 | background-color: #FAF9F6; 112 | box-sizing: border-box; 113 | padding: 10px; 114 | color: black; 115 | font-family: Verdana, sans-serif; 116 | } 117 | 118 | .cc-title { 119 | margin-top: 0px; 120 | margin-bottom: 0px; 121 | margin-right: 0px; 122 | margin-left: 0px; 123 | text-align: center; 124 | } 125 | 126 | .cc-help { 127 | cursor: pointer; 128 | margin-left: -2px; 129 | } 130 | 131 | .cc-subtitle { 132 | margin-top: 0px; 133 | margin-bottom: 10px; 134 | margin-right: 0px; 135 | margin-left: 0px; 136 | text-align: center; 137 | font-size: 13px; 138 | } 139 | 140 | .cc-button { 141 | font-family: Verdana, sans-serif; 142 | background-color: #413931; 143 | border: none; 144 | color: white; 145 | padding: 5px 12px; 146 | text-align: center; 147 | text-decoration: none; 148 | display: inline-block; 149 | font-size: 16px; 150 | margin: 4px 0px; 151 | cursor: pointer; 152 | transition: all 0.15s ease-in-out; 153 | } 154 | 155 | .cc-button:hover { 156 | background-color: #A59D95 !important; 157 | } 158 | 159 | .cc-center-parent { 160 | display: flex; 161 | justify-content: center; 162 | align-items: center; 163 | width: 100%; 164 | } 165 | 166 | .cc-slide-container { 167 | margin-top: 3px; 168 | } 169 | 170 | .cc-slider { 171 | -webkit-appearance: none; 172 | width: 100%; 173 | height: 15px; 174 | margin-top: 7px; 175 | border-radius: 5px; 176 | background: #413931; 177 | outline: none; 178 | opacity: 0.7; 179 | -webkit-transition: 0.2s; 180 | transition: opacity 0.2s; 181 | } 182 | 183 | .cc-slider::-webkit-slider-thumb { 184 | -webkit-appearance: none; 185 | appearance: none; 186 | width: 25px; 187 | height: 25px; 188 | border-radius: 50%; 189 | background: black; 190 | cursor: pointer; 191 | } 192 | 193 | .cc-slider::-moz-range-thumb { 194 | width: 25px; 195 | height: 25px; 196 | border-radius: 50%; 197 | background: black; 198 | cursor: pointer; 199 | } 200 | 201 | .cc-slider:hover { 202 | opacity: 1; 203 | } 204 | ` 205 | 206 | export const loadPopup = () => { 207 | document.head.appendChild(document.createElement("style")).innerHTML = css 208 | 209 | const div = document.body.appendChild(document.createElement("div")) 210 | div.innerHTML = html 211 | 212 | const parent = document.getElementById("cc-parent") as HTMLDivElement 213 | if (localStorage.getItem("cc-popup") === "false") { 214 | parent.style.display = "none" 215 | toast("Hack menu is hidden. Press shift+a to show it.", "#413931") 216 | } 217 | 218 | /* ---------------------------- Hide with shift+a --------------------------- */ 219 | document.addEventListener("keydown", (event) => { 220 | if (event.key.toLowerCase() === "a" && event.shiftKey) { 221 | if (parent.style.display === "none") { 222 | showArrows() 223 | parent.style.display = "flex" 224 | localStorage.setItem("cc-popup", "true") 225 | boundParent() 226 | } else { 227 | hideArrows() 228 | parent.style.display = "none" 229 | localStorage.setItem("cc-popup", "false") 230 | } 231 | } 232 | }) 233 | 234 | /* -------------------------------- Dragging -------------------------------- */ 235 | const dragger = document.getElementById("cc-dragger") as HTMLDivElement 236 | const x = localStorage.getItem("cc-popup-x") 237 | const y = localStorage.getItem("cc-popup-y") 238 | if (x && y) { 239 | parent.style.left = x 240 | parent.style.top = y 241 | } 242 | 243 | const boundParent = () => { 244 | const rect = parent.getBoundingClientRect() 245 | if (rect.left < 0) parent.style.left = "0px" 246 | if (rect.top < 0) parent.style.top = "0px" 247 | if (rect.right > document.body.clientWidth) parent.style.left = `${document.body.clientWidth - rect.width}px` 248 | if (rect.bottom > window.innerHeight) parent.style.top = `${window.innerHeight - rect.height}px` 249 | } 250 | 251 | dragger.addEventListener("mousedown", (event) => { 252 | window.getSelection().removeAllRanges() 253 | document.body.style.userSelect = "none" 254 | dragger.style.cursor = "grabbing" 255 | 256 | const offsetX = event.clientX - parent.offsetLeft 257 | const offsetY = event.clientY - parent.offsetTop 258 | 259 | const mousemove = (e: MouseEvent) => { 260 | parent.style.left = `${e.clientX - offsetX}px` 261 | parent.style.top = `${e.clientY - offsetY}px` 262 | boundParent() 263 | 264 | localStorage.setItem("cc-popup-x", parent.style.left) 265 | localStorage.setItem("cc-popup-y", parent.style.top) 266 | } 267 | 268 | document.addEventListener("mousemove", mousemove) 269 | document.addEventListener("mouseup", () => { 270 | document.body.style.userSelect = "auto" 271 | dragger.style.cursor = "grab" 272 | document.removeEventListener("mousemove", mousemove) 273 | }) 274 | }) 275 | window.addEventListener("resize", () => boundParent()) 276 | setTimeout(() => boundParent(), 1000) 277 | 278 | /* -------------------------------- Game mode ------------------------------- */ 279 | const currentGameMode = document.getElementById("cc-current-gamemode") as HTMLSpanElement 280 | const localGameMode = localStorage.getItem("cc-popup-gamemode") 281 | if (localGameMode) currentGameMode.innerText = localGameMode 282 | 283 | const standardButton = document.getElementById("cc-standard-mode-button") as HTMLButtonElement 284 | const fenModeButton = document.getElementById("cc-fen-mode-button") as HTMLButtonElement 285 | 286 | const saveGameMode = () => localStorage.setItem("cc-popup-gamemode", currentGameMode.innerText) 287 | standardButton.addEventListener("click", () => { 288 | currentGameMode.innerText = "Standard" 289 | saveGameMode() 290 | }) 291 | fenModeButton.addEventListener("click", () => { 292 | currentGameMode.innerText = "FEN" 293 | saveGameMode() 294 | }) 295 | 296 | /* ---------------------------------- Color --------------------------------- */ 297 | const currentColor = document.getElementById("cc-current-color") as HTMLSpanElement 298 | const localColor = localStorage.getItem("cc-popup-color") 299 | if (localColor) currentColor.innerText = localColor 300 | 301 | const whiteButton = document.getElementById("cc-white-button") as HTMLButtonElement 302 | const blackButton = document.getElementById("cc-black-button") as HTMLButtonElement 303 | 304 | const saveColor = () => localStorage.setItem("cc-popup-color", currentColor.innerText) 305 | whiteButton.addEventListener("click", () => { 306 | currentColor.innerText = "White" 307 | saveColor() 308 | }) 309 | blackButton.addEventListener("click", () => { 310 | currentColor.innerText = "Black" 311 | saveColor() 312 | }) 313 | 314 | /* --------------------------------- Engine --------------------------------- */ 315 | const currentEngine = document.getElementById("cc-current-engine") as HTMLSpanElement 316 | const localEngine = localStorage.getItem("cc-popup-engine") 317 | if (localEngine) currentEngine.innerText = localEngine 318 | 319 | const asmButton = document.getElementById("cc-asm-button") as HTMLButtonElement 320 | const singleButton = document.getElementById("cc-single-button") as HTMLButtonElement 321 | 322 | const saveEngine = () => localStorage.setItem("cc-popup-engine", currentEngine.innerText) 323 | asmButton.addEventListener("click", () => { 324 | currentEngine.innerText = "ASM" 325 | saveEngine() 326 | updateEngine() 327 | }) 328 | singleButton.addEventListener("click", () => { 329 | currentEngine.innerText = "Single" 330 | saveEngine() 331 | updateEngine() 332 | }) 333 | 334 | /* ------------------------------- Multilines ------------------------------- */ 335 | const currentMultiline = document.getElementById("cc-current-multiline") as HTMLSpanElement 336 | const localML = localStorage.getItem("cc-popup-multilines") 337 | if (localML) currentMultiline.innerText = localML 338 | 339 | const plusButton = document.getElementById("cc-ml-plus-button") as HTMLButtonElement 340 | const minusButton = document.getElementById("cc-ml-minus-button") as HTMLButtonElement 341 | 342 | const saveML = () => { 343 | localStorage.setItem("cc-popup-multilines", currentMultiline.innerText) 344 | setMultilines(parseInt(currentMultiline.innerText)) 345 | } 346 | setMultilines(parseInt(currentMultiline.innerText)) 347 | plusButton.addEventListener("click", () => { 348 | const current = parseInt(currentMultiline.innerText) 349 | currentMultiline.innerText = `${Math.min(current + 1, 5)}` 350 | saveML() 351 | }) 352 | minusButton.addEventListener("click", () => { 353 | const current = parseInt(currentMultiline.innerText) 354 | currentMultiline.innerText = `${Math.max(current - 1, 1)}` 355 | saveML() 356 | }) 357 | 358 | /* -------------------------------- Max depth ------------------------------- */ 359 | const currentMaxDepth = document.getElementById("cc-current-max-depth") as HTMLSpanElement 360 | const localMaxDepth = localStorage.getItem("cc-popup-max-depth") 361 | if (localMaxDepth) currentMaxDepth.innerText = localMaxDepth 362 | 363 | const maxDepthSlider = document.getElementById("cc-max-depth-slider") as HTMLInputElement 364 | if (currentMaxDepth.innerText === "∞") maxDepthSlider.value = "31" 365 | else maxDepthSlider.value = currentMaxDepth.innerText 366 | 367 | let saveMaxDepthDelay: number 368 | 369 | const saveMaxDepth = (delay = true) => { 370 | if (saveMaxDepthDelay) clearTimeout(saveMaxDepthDelay) 371 | saveMaxDepthDelay = setTimeout( 372 | () => { 373 | localStorage.setItem("cc-popup-max-depth", currentMaxDepth.innerText) 374 | if (currentMaxDepth.innerText === "∞") setMaxDepth(-1) 375 | else setMaxDepth(parseInt(currentMaxDepth.innerText)) 376 | }, 377 | delay ? 200 : 0, 378 | ) 379 | } 380 | saveMaxDepth(false) 381 | 382 | maxDepthSlider.addEventListener("input", () => { 383 | currentMaxDepth.innerText = parseInt(maxDepthSlider.value) === 31 ? "∞" : maxDepthSlider.value 384 | saveMaxDepth() 385 | }) 386 | 387 | /* ------------------------------ Start button ------------------------------ */ 388 | const currentBM = document.getElementById("cc-current-bm") as HTMLSpanElement 389 | const currentEval = document.getElementById("cc-current-eval") as HTMLSpanElement 390 | const currentDepth = document.getElementById("cc-current-depth") as HTMLSpanElement 391 | 392 | const startButton = document.getElementById("cc-start-button") as HTMLButtonElement 393 | startButton.addEventListener("click", () => { 394 | if (startButton.innerText === "Stopping...") return 395 | 396 | if (startButton.innerText === "Start hack") { 397 | let chess: Chess 398 | try { 399 | chess = getChess() 400 | } catch { 401 | toast("You must be in a game (with at least 1 move) to start the hack") 402 | return 403 | } 404 | 405 | startButton.innerText = "Stop hack" 406 | startButton.style.backgroundColor = activeColor 407 | startEval(chess, () => { 408 | currentBM.innerText = info?.lines[0]?.moves?.[0] ?? "N/A" 409 | currentEval.innerText = info.evaluation 410 | currentDepth.innerText = info.cloud ? `${info.depth} (cloud)` : `${info.depth}` 411 | 412 | clearArrows() 413 | 414 | const parse = (evaluation: string) => { 415 | const e = (() => { 416 | if (evaluation.startsWith("M")) return 100 417 | if (evaluation.startsWith("M-")) return -100 418 | return parseFloat(evaluation) 419 | })() 420 | return currentColor.innerText === "White" ? e : -e 421 | } 422 | 423 | const bestEval = parse(info.evaluation) 424 | for (let i = 0; i < info.lines.length; i++) { 425 | if (i >= parseInt(currentMultiline.innerText)) break 426 | 427 | const line = info.lines?.[i] 428 | const move = line?.moves?.[0] 429 | if (!move) continue 430 | 431 | const from = move.slice(0, 2) 432 | const to = move.slice(2, 4) 433 | 434 | const evaluation = parse(line.evaluation) 435 | if (evaluation === bestEval) { 436 | createArrow(from, to, 1) 437 | continue 438 | } 439 | 440 | const diff = Math.abs(evaluation - bestEval) 441 | const opacity = (() => { 442 | if (diff > 5) return 0.05 443 | if (diff > 3) return 0.1 444 | if (diff > 1) return 0.3 445 | if (diff > 0.5) return 0.6 446 | return 0.7 447 | })() 448 | 449 | createArrow(from, to, opacity) 450 | } 451 | }) 452 | return 453 | } 454 | 455 | startButton.innerText = "Stopping..." 456 | stopEval(() => { 457 | clearArrows() 458 | startButton.innerText = "Start hack" 459 | startButton.style.backgroundColor = inactiveColor 460 | }) 461 | }) 462 | 463 | /* ------------------------------ Copy buttons ------------------------------ */ 464 | const gameExists = () => { 465 | if (!info?.game) { 466 | try { 467 | info.game = getChess() 468 | } catch { 469 | toast("You must be in a game (with at least 1 move) to use this feature.") 470 | return false 471 | } 472 | } 473 | return true 474 | } 475 | 476 | const copyText = (text: string, name: string) => { 477 | if (copy(text)) toast(`${name} copied to clipboard.`, "#413931") 478 | } 479 | 480 | const fenButton = document.getElementById("cc-fen-button") as HTMLButtonElement 481 | const pgnButton = document.getElementById("cc-pgn-button") as HTMLButtonElement 482 | 483 | fenButton.addEventListener("click", () => { 484 | if (!gameExists()) return 485 | copyText(info.game.fen(), "FEN") 486 | }) 487 | pgnButton.addEventListener("click", () => { 488 | if (!gameExists()) return 489 | copyText(info.game.pgn(), "PGN") 490 | }) 491 | 492 | /* ----------------------------- Lichess button ----------------------------- */ 493 | const lichessButton = document.getElementById("cc-lichess-button") as HTMLButtonElement 494 | lichessButton.addEventListener("click", () => { 495 | if (!gameExists()) return 496 | window.open(`https://lichess.org/analysis/standard/${info.game.fen().replaceAll(" ", "_")}`, "_blank") 497 | }) 498 | } 499 | -------------------------------------------------------------------------------- /src/types.d.ts: -------------------------------------------------------------------------------- 1 | export interface Config { 2 | domain: Domain 3 | isFacebookCanvas: boolean 4 | facebookId: string 5 | pathToEngineWorker: string 6 | pathToEngineWorkerAlt: string 7 | pathToWasmEngine: string 8 | pathToNonWasmEngine: string 9 | pathToKomodoWorker: string 10 | pathToWasmKomodo: string 11 | pathToNonWasmKomodo: string 12 | pathToExplanationEngineWorker: string 13 | pathToWasmExplanationEngine: string 14 | pathToEcoJson: string 15 | pathToBook: string 16 | pathToBookSmall: string 17 | pathToWebGL: string 18 | pathToGamePreviewLoader: string 19 | pathToPersonalityBooks: PersonalityBooks 20 | threadedEnginePaths: ThreadedEnginePaths 21 | oldThemes: boolean 22 | isPlay: boolean 23 | isStaff: boolean 24 | noAvatar: string 25 | wdlJsonModel: string 26 | wdlWeights: string 27 | ad: Ad 28 | adCustomPath: string 29 | pathToTinyMCE: string 30 | pathToFCMWorker: string 31 | pathToDiagramViewerCSS: string 32 | pathToDiagramViewerJS: string 33 | } 34 | 35 | interface PersonalityBooks { 36 | aggressive: string 37 | balanced: string 38 | beginner: string 39 | classical: string 40 | "f-pawner": string 41 | fischer: string 42 | gambit: string 43 | indian: string 44 | nakamura: string 45 | offbeat: string 46 | positional: string 47 | quick_queen: string 48 | rensch: string 49 | winger: string 50 | } 51 | 52 | interface Domain { 53 | main: string 54 | static: string 55 | files: string 56 | live: string 57 | live2: string 58 | live3: string 59 | voice: string 60 | cssjs: string 61 | images: string 62 | avatars: string 63 | baseUrl: string 64 | } 65 | 66 | interface Ad { 67 | noAds: boolean 68 | disabledAds: any[] 69 | } 70 | 71 | interface ThreadedEnginePaths { 72 | stockfish: Stockfish 73 | } 74 | 75 | interface Stockfish { 76 | fakeWorker: FakeWorker 77 | multiThreaded: MultiThreaded 78 | singleThreaded: FakeWorker 79 | asm: string 80 | fakeWorkerBrowserVersions: FakeWorkerBrowserVersion[] 81 | } 82 | 83 | interface FakeWorker { 84 | loader: string 85 | engine: string 86 | } 87 | 88 | interface FakeWorkerBrowserVersion { 89 | browser: string 90 | version: number 91 | } 92 | 93 | interface MultiThreaded { 94 | loader: string 95 | engine: string 96 | nnue: string 97 | } 98 | -------------------------------------------------------------------------------- /src/util.ts: -------------------------------------------------------------------------------- 1 | import Toastify from "toastify-js" 2 | 3 | export const colorLog = (color: string, ...args: any[]) => console.log(`%c${args.join(" ")}`, `color: ${color}`) 4 | export const wait = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)) 5 | 6 | export const toast = (text: string, background = "#F3654C") => 7 | Toastify({ 8 | text: text, 9 | duration: 3000, 10 | gravity: "top", 11 | position: "center", 12 | style: { 13 | background, 14 | boxShadow: "0 10px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)", 15 | }, 16 | close: true, 17 | }).showToast() 18 | 19 | export const radians = (p1: [number, number], p2: [number, number]): number => Math.atan2(p2[1] - p1[1], p2[0] - p1[0]) 20 | export const project = (p: [number, number], radians: number, distance: number): [number, number] => [p[0] + Math.cos(radians) * distance, p[1] + Math.sin(radians) * distance] 21 | 22 | export const moveArrowHeads = (tail: [number, number], head: [number, number], distance: number, reverseDistance: number): [[number, number], [number, number]] => { 23 | const r = radians(tail, head) 24 | return [project(tail, r, reverseDistance), project(head, r, -distance)] 25 | } 26 | -------------------------------------------------------------------------------- /src/util_chrome.ts: -------------------------------------------------------------------------------- 1 | export const retrieveWindowVariable = (_: string): any => ({ 2 | threadedEnginePaths: { 3 | stockfish: { 4 | fakeWorker: { 5 | loader: "https://www.chess.com/bundles/app/js/engine/stockfish-nnue-15.1-no-Worker.47c3d633.js", 6 | engine: "https://www.chess.com/bundles/app/js/engine/stockfish-nnue-15.1-no-Worker.a459ad84.wasm", 7 | }, 8 | multiThreaded: { 9 | loader: "https://www.chess.com/bundles/app/js/engine/stockfish-nnue-15.1.274aa595.js", 10 | engine: "/bundles/app/js/engine/stockfish-nnue-15.1.5f5319f2.wasm", 11 | nnue: "/bundles/app/js/engine/nn-ad9b42354671.f89fd37b.nnue", 12 | }, 13 | singleThreaded: { 14 | loader: "/bundles/app/js/engine/stockfish-single.830cf9cc.js", 15 | engine: "/bundles/app/js/engine/stockfish-single.8ffa2b70.wasm", 16 | }, 17 | asm: "/bundles/app/js/engine/stockfish.asm.16fa8540.js", 18 | fakeWorkerBrowserVersions: [ 19 | { 20 | browser: "chrome", 21 | version: 109, 22 | }, 23 | ], 24 | }, 25 | }, 26 | }) 27 | -------------------------------------------------------------------------------- /src/util_firefox.ts: -------------------------------------------------------------------------------- 1 | const retrieveWindowVariables = (variables: string[]): Record => { 2 | const ret = {} 3 | 4 | const scriptContent = variables.reduce((acc, curr) => { 5 | return acc + `if (typeof ${curr} !== 'undefined') document.body.setAttribute('tmp_${curr}', JSON.stringify(${curr}));` 6 | }, "") 7 | 8 | const script = document.createElement("script") 9 | script.id = "tmpScript" 10 | script.appendChild(document.createTextNode(scriptContent)) 11 | ;(document.body || document.head || document.documentElement).appendChild(script) 12 | 13 | for (const variable of variables) { 14 | ret[variable] = JSON.parse(document.body.getAttribute("tmp_" + variable)) 15 | document.body.removeAttribute("tmp_" + variable) 16 | } 17 | 18 | document.getElementById("tmpScript").remove() 19 | return ret 20 | } 21 | 22 | export const retrieveWindowVariable = (variable: string): any => retrieveWindowVariables([variable])[variable] 23 | -------------------------------------------------------------------------------- /src/version.ts: -------------------------------------------------------------------------------- 1 | import Toast from "toastify-js" 2 | 3 | const getVersion = (): Promise => 4 | new Promise((resolve) => { 5 | chrome.runtime.sendMessage( 6 | { 7 | id: "fetchData", 8 | url: "https://raw.githack.com/jameslinimk/chess-com-cheater/master/static/manifest.json", 9 | }, 10 | (response) => { 11 | if (response?.error) resolve(null) 12 | resolve(response.response) 13 | }, 14 | ) 15 | }) 16 | 17 | export const checkVersion = async () => { 18 | const manifest: { version: string } = await getVersion() 19 | if (!manifest) return 20 | 21 | const url = chrome.runtime.getURL("manifest.json") 22 | const local: { version: string } = await (await fetch(url)).json() 23 | 24 | if (local.version !== manifest.version) { 25 | Toast({ 26 | text: "New version available, click to update!", 27 | duration: 10000, 28 | gravity: "top", 29 | position: "center", 30 | style: { 31 | background: "#F3654C", 32 | boxShadow: "0 10px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)", 33 | }, 34 | close: true, 35 | onClick: () => { 36 | window.open("https://github.com/jameslinimk/chess-com-cheater/releases/latest", "_blank") 37 | }, 38 | }).showToast() 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /static/chrome_manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "Chess.com cheats", 4 | "version": "1.62", 5 | "description": "Runs a WASM Stockfish in your chess.com games. Displays the best moves (up to 3) and evaluation for the current board.", 6 | "icons": { 7 | "48": "icons/icon-48.png", 8 | "96": "icons/icon-96.png", 9 | "128": "icons/icon-128.png", 10 | "256": "icons/icon-256.png" 11 | }, 12 | "background": { 13 | "service_worker": "background.bundle.min.js" 14 | }, 15 | "content_scripts": [ 16 | { 17 | "matches": ["*://*.chess.com/*"], 18 | "js": ["content.bundle.min.js"], 19 | "run_at": "document_end" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /static/icons/icon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jameslinimk/chess-com-cheater/2ee0db8dfb6dfa21f45d7b1b785220d47b0e3724/static/icons/icon-128.png -------------------------------------------------------------------------------- /static/icons/icon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jameslinimk/chess-com-cheater/2ee0db8dfb6dfa21f45d7b1b785220d47b0e3724/static/icons/icon-256.png -------------------------------------------------------------------------------- /static/icons/icon-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jameslinimk/chess-com-cheater/2ee0db8dfb6dfa21f45d7b1b785220d47b0e3724/static/icons/icon-48.png -------------------------------------------------------------------------------- /static/icons/icon-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jameslinimk/chess-com-cheater/2ee0db8dfb6dfa21f45d7b1b785220d47b0e3724/static/icons/icon-96.png -------------------------------------------------------------------------------- /static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2, 3 | "name": "Chess.com cheats", 4 | "version": "1.62", 5 | "description": "Runs a WASM Stockfish in your chess.com games. Displays the best moves (up to 3) and evaluation for the current board.", 6 | "browser_specific_settings": { 7 | "gecko": { 8 | "id": "jameskimimk@gmail.com" 9 | } 10 | }, 11 | "icons": { 12 | "48": "icons/icon-48.png", 13 | "96": "icons/icon-96.png", 14 | "128": "icons/icon-128.png", 15 | "256": "icons/icon-256.png" 16 | }, 17 | "content_scripts": [ 18 | { 19 | "matches": ["*://*.chess.com/*"], 20 | "js": ["content.bundle.min.js"], 21 | "run_at": "document_end" 22 | } 23 | ], 24 | "background": { 25 | "scripts": ["background.bundle.min.js"] 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "watch": true, 5 | "lib": [ 6 | "ESNext", 7 | "DOM" 8 | ], 9 | "types": [ 10 | "chrome" 11 | ], 12 | "module": "ESNext", 13 | "moduleResolution": "node", 14 | "skipLibCheck": true, 15 | "outDir": "temp", 16 | "allowSyntheticDefaultImports": true, 17 | "resolveJsonModule": true 18 | }, 19 | "exclude": [ 20 | "node_modules", 21 | "dist", 22 | "temp" 23 | ] 24 | } 25 | --------------------------------------------------------------------------------