├── .gitattributes ├── .github └── workflows │ └── node.js.yml ├── .gitignore ├── LICENSE ├── README.md ├── index.mjs ├── package-lock.json ├── package.json └── test ├── a.png ├── b.png ├── result.png └── test.mjs /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: Node.js CI 5 | 6 | on: 7 | push: 8 | branches: [ master ] 9 | pull_request: 10 | branches: [ master ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | node-version: [12.x, 14.x, 16.x, 18.x] 20 | 21 | steps: 22 | - uses: actions/checkout@v3 23 | - name: Use Node.js ${{ matrix.node-version }} 24 | uses: actions/setup-node@v3 25 | with: 26 | node-version: ${{ matrix.node-version }} 27 | - run: npm ci 28 | - run: npm run test 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Coxxs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # image-hide 2 | 3 | Put a secret image into another image using alpha channel magic. 4 | 5 | Try to view this image under black background: 6 | 7 | 8 | 9 | Inspired by [Hackergame 2019](https://github.com/ustclug/hackergame2019-writeups/blob/master/official/%E7%99%BD%E4%B8%8E%E5%A4%9C/README.md) 10 | 11 | ## Usage 12 | 13 | ```bash 14 | npm install --save image-hide 15 | ``` 16 | 17 | ```javascript 18 | import { promises as fs } from 'fs' 19 | import hide from 'image-hide' 20 | 21 | // Size (width & height) of these images should be same. 22 | let imageA = await fs.readFile('a.png') 23 | let imageB = await fs.readFile('b.png') 24 | 25 | await fs.writeFile('result.png', Buffer.from(hide(imageA, imageB))) 26 | ``` -------------------------------------------------------------------------------- /index.mjs: -------------------------------------------------------------------------------- 1 | import decode from 'image-decode' 2 | import encode from 'image-encode' 3 | 4 | export default function hide(foreground, background) { 5 | let image_a = decode(foreground) 6 | let image_b = decode(background) 7 | if (image_a.height != image_b.height || image_a.width !== image_b.width) { 8 | throw new Error(`Size of images should be same. ${image_a.width}x${image_a.height} !== ${image_b.width}x${image_b.height}`) 9 | } 10 | let h = image_a.height 11 | let w = image_a.width 12 | for (let i = 0; i < h; i++) { 13 | for (let j = 0; j < w; j++) { 14 | let n = (w * i + j) * 4 15 | let [ r, g, b, a ] = [ n, n + 1, n + 2, n + 3 ] 16 | 17 | let avg_a = getPixelAvg(image_a.data[r], image_a.data[g], image_a.data[b], image_a.data[a], 255) 18 | let avg_b = getPixelAvg(image_b.data[r], image_b.data[g], image_b.data[b], image_b.data[a]) 19 | avg_a = (avg_a / 255) * 0.5 20 | avg_b = (avg_b / 255) * 0.5 21 | let new_avg = Math.round(avg_b / (0.5 - avg_a + avg_b) * 255) 22 | let new_alpha = Math.round((0.5 - avg_a + avg_b) * 255) 23 | image_a.data[r] = image_a.data[g] = image_a.data[b] = new_avg 24 | image_a.data[a] = new_alpha 25 | } 26 | } 27 | return encode(image_a.data, [w, h], 'png') 28 | } 29 | 30 | function getPixelAvg(r, g, b, a, bg = 0) { 31 | return (r + g + b) / 3 * (a / 255) + bg * (1 - a / 255) 32 | } 33 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "image-hide", 3 | "version": "1.0.3", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "image-hide", 9 | "version": "1.0.3", 10 | "license": "MIT", 11 | "dependencies": { 12 | "image-decode": "^1.2.2", 13 | "image-encode": "^1.3.1", 14 | "jpeg-js": ">=0.4.4" 15 | }, 16 | "devDependencies": { 17 | "mocha": "^10.0.0" 18 | } 19 | }, 20 | "node_modules/ansi-colors": { 21 | "version": "4.1.3", 22 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", 23 | "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", 24 | "dev": true, 25 | "license": "MIT", 26 | "engines": { 27 | "node": ">=6" 28 | } 29 | }, 30 | "node_modules/ansi-regex": { 31 | "version": "5.0.1", 32 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 33 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 34 | "dev": true, 35 | "engines": { 36 | "node": ">=8" 37 | } 38 | }, 39 | "node_modules/ansi-styles": { 40 | "version": "4.3.0", 41 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 42 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 43 | "dev": true, 44 | "dependencies": { 45 | "color-convert": "^2.0.1" 46 | }, 47 | "engines": { 48 | "node": ">=8" 49 | }, 50 | "funding": { 51 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 52 | } 53 | }, 54 | "node_modules/anymatch": { 55 | "version": "3.1.2", 56 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 57 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 58 | "dev": true, 59 | "dependencies": { 60 | "normalize-path": "^3.0.0", 61 | "picomatch": "^2.0.4" 62 | }, 63 | "engines": { 64 | "node": ">= 8" 65 | } 66 | }, 67 | "node_modules/argparse": { 68 | "version": "2.0.1", 69 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 70 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 71 | "dev": true 72 | }, 73 | "node_modules/arr-flatten": { 74 | "version": "1.1.0", 75 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 76 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 77 | "engines": { 78 | "node": ">=0.10.0" 79 | } 80 | }, 81 | "node_modules/atob-lite": { 82 | "version": "2.0.0", 83 | "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", 84 | "integrity": "sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw==" 85 | }, 86 | "node_modules/balanced-match": { 87 | "version": "1.0.2", 88 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 89 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 90 | "dev": true, 91 | "license": "MIT" 92 | }, 93 | "node_modules/binary-extensions": { 94 | "version": "2.2.0", 95 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 96 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 97 | "dev": true, 98 | "engines": { 99 | "node": ">=8" 100 | } 101 | }, 102 | "node_modules/bmp-js": { 103 | "version": "0.1.0", 104 | "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", 105 | "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" 106 | }, 107 | "node_modules/brace-expansion": { 108 | "version": "2.0.1", 109 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 110 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 111 | "dev": true, 112 | "license": "MIT", 113 | "dependencies": { 114 | "balanced-match": "^1.0.0" 115 | } 116 | }, 117 | "node_modules/braces": { 118 | "version": "3.0.3", 119 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 120 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 121 | "dev": true, 122 | "dependencies": { 123 | "fill-range": "^7.1.1" 124 | }, 125 | "engines": { 126 | "node": ">=8" 127 | } 128 | }, 129 | "node_modules/browser-stdout": { 130 | "version": "1.3.1", 131 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 132 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 133 | "dev": true 134 | }, 135 | "node_modules/buffer-to-uint8array": { 136 | "version": "1.1.0", 137 | "resolved": "https://registry.npmjs.org/buffer-to-uint8array/-/buffer-to-uint8array-1.1.0.tgz", 138 | "integrity": "sha512-JVTSbtA6YuOGdu5NL0ffizsBwuwbTXfV7OC91FhazMz9UKP/KlDS+Z7wuiSRClbnTQz52fJgVXI9YDXQRVl2sQ==" 139 | }, 140 | "node_modules/camelcase": { 141 | "version": "6.3.0", 142 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 143 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 144 | "dev": true, 145 | "engines": { 146 | "node": ">=10" 147 | }, 148 | "funding": { 149 | "url": "https://github.com/sponsors/sindresorhus" 150 | } 151 | }, 152 | "node_modules/chalk": { 153 | "version": "4.1.2", 154 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 155 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 156 | "dev": true, 157 | "dependencies": { 158 | "ansi-styles": "^4.1.0", 159 | "supports-color": "^7.1.0" 160 | }, 161 | "engines": { 162 | "node": ">=10" 163 | }, 164 | "funding": { 165 | "url": "https://github.com/chalk/chalk?sponsor=1" 166 | } 167 | }, 168 | "node_modules/chalk/node_modules/supports-color": { 169 | "version": "7.2.0", 170 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 171 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 172 | "dev": true, 173 | "dependencies": { 174 | "has-flag": "^4.0.0" 175 | }, 176 | "engines": { 177 | "node": ">=8" 178 | } 179 | }, 180 | "node_modules/chokidar": { 181 | "version": "3.5.3", 182 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 183 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 184 | "dev": true, 185 | "funding": [ 186 | { 187 | "type": "individual", 188 | "url": "https://paulmillr.com/funding/" 189 | } 190 | ], 191 | "dependencies": { 192 | "anymatch": "~3.1.2", 193 | "braces": "~3.0.2", 194 | "glob-parent": "~5.1.2", 195 | "is-binary-path": "~2.1.0", 196 | "is-glob": "~4.0.1", 197 | "normalize-path": "~3.0.0", 198 | "readdirp": "~3.6.0" 199 | }, 200 | "engines": { 201 | "node": ">= 8.10.0" 202 | }, 203 | "optionalDependencies": { 204 | "fsevents": "~2.3.2" 205 | } 206 | }, 207 | "node_modules/clamp": { 208 | "version": "1.0.1", 209 | "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz", 210 | "integrity": "sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==" 211 | }, 212 | "node_modules/cliui": { 213 | "version": "7.0.4", 214 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 215 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 216 | "dev": true, 217 | "dependencies": { 218 | "string-width": "^4.2.0", 219 | "strip-ansi": "^6.0.0", 220 | "wrap-ansi": "^7.0.0" 221 | } 222 | }, 223 | "node_modules/color-convert": { 224 | "version": "2.0.1", 225 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 226 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 227 | "dev": true, 228 | "dependencies": { 229 | "color-name": "~1.1.4" 230 | }, 231 | "engines": { 232 | "node": ">=7.0.0" 233 | } 234 | }, 235 | "node_modules/color-id": { 236 | "version": "1.1.0", 237 | "resolved": "https://registry.npmjs.org/color-id/-/color-id-1.1.0.tgz", 238 | "integrity": "sha512-2iRtAn6dC/6/G7bBIo0uupVrIne1NsQJvJxZOBCzQOfk7jRq97feaDZ3RdzuHakRXXnHGNwglto3pqtRx1sX0g==", 239 | "dependencies": { 240 | "clamp": "^1.0.1" 241 | } 242 | }, 243 | "node_modules/color-name": { 244 | "version": "1.1.4", 245 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 246 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 247 | "dev": true 248 | }, 249 | "node_modules/compute-dims": { 250 | "version": "1.1.0", 251 | "resolved": "https://registry.npmjs.org/compute-dims/-/compute-dims-1.1.0.tgz", 252 | "integrity": "sha512-YHMiIKjH/8Eom8zATk3g8/lH3HxGCZcVQyEfEoVrfWI7od/WRpTgRGShnei3jArYSx77mQqPxZNokjGHCdLfxg==", 253 | "dependencies": { 254 | "utils-copy": "^1.0.0", 255 | "validate.io-array": "^1.0.6", 256 | "validate.io-matrix-like": "^1.0.2", 257 | "validate.io-ndarray-like": "^1.0.0", 258 | "validate.io-positive-integer": "^1.0.0" 259 | } 260 | }, 261 | "node_modules/const-max-uint32": { 262 | "version": "1.0.2", 263 | "resolved": "https://registry.npmjs.org/const-max-uint32/-/const-max-uint32-1.0.2.tgz", 264 | "integrity": "sha512-T8/9bffg5RThuejasJWrwqxs3Q0fsJvyl7/33IB6svroD8JC93E7X60AuuOnDE8RlP6Jlb5FxmlrVDpl9KiU2Q==" 265 | }, 266 | "node_modules/const-pinf-float64": { 267 | "version": "1.0.0", 268 | "resolved": "https://registry.npmjs.org/const-pinf-float64/-/const-pinf-float64-1.0.0.tgz", 269 | "integrity": "sha512-wfs+V4HdSN7C3CWJWR7hVa24yTPn3mDJthwhRIObZBh6UjTjkUMUrCP3UrNGozB/HjTpcScnGXtQUNa+yjsIJQ==" 270 | }, 271 | "node_modules/debug": { 272 | "version": "4.4.0", 273 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 274 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 275 | "dev": true, 276 | "license": "MIT", 277 | "dependencies": { 278 | "ms": "^2.1.3" 279 | }, 280 | "engines": { 281 | "node": ">=6.0" 282 | }, 283 | "peerDependenciesMeta": { 284 | "supports-color": { 285 | "optional": true 286 | } 287 | } 288 | }, 289 | "node_modules/decamelize": { 290 | "version": "4.0.0", 291 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 292 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 293 | "dev": true, 294 | "engines": { 295 | "node": ">=10" 296 | }, 297 | "funding": { 298 | "url": "https://github.com/sponsors/sindresorhus" 299 | } 300 | }, 301 | "node_modules/diff": { 302 | "version": "5.2.0", 303 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", 304 | "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", 305 | "dev": true, 306 | "license": "BSD-3-Clause", 307 | "engines": { 308 | "node": ">=0.3.1" 309 | } 310 | }, 311 | "node_modules/dtype": { 312 | "version": "2.0.0", 313 | "resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz", 314 | "integrity": "sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg==", 315 | "engines": { 316 | "node": ">= 0.8.0" 317 | } 318 | }, 319 | "node_modules/emoji-regex": { 320 | "version": "8.0.0", 321 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 322 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 323 | "dev": true 324 | }, 325 | "node_modules/escalade": { 326 | "version": "3.1.1", 327 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 328 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 329 | "dev": true, 330 | "engines": { 331 | "node": ">=6" 332 | } 333 | }, 334 | "node_modules/escape-string-regexp": { 335 | "version": "4.0.0", 336 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 337 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 338 | "dev": true, 339 | "engines": { 340 | "node": ">=10" 341 | }, 342 | "funding": { 343 | "url": "https://github.com/sponsors/sindresorhus" 344 | } 345 | }, 346 | "node_modules/file-type": { 347 | "version": "10.11.0", 348 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", 349 | "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", 350 | "engines": { 351 | "node": ">=6" 352 | } 353 | }, 354 | "node_modules/fill-range": { 355 | "version": "7.1.1", 356 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 357 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 358 | "dev": true, 359 | "dependencies": { 360 | "to-regex-range": "^5.0.1" 361 | }, 362 | "engines": { 363 | "node": ">=8" 364 | } 365 | }, 366 | "node_modules/find-up": { 367 | "version": "5.0.0", 368 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 369 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 370 | "dev": true, 371 | "dependencies": { 372 | "locate-path": "^6.0.0", 373 | "path-exists": "^4.0.0" 374 | }, 375 | "engines": { 376 | "node": ">=10" 377 | }, 378 | "funding": { 379 | "url": "https://github.com/sponsors/sindresorhus" 380 | } 381 | }, 382 | "node_modules/flat": { 383 | "version": "5.0.2", 384 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 385 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 386 | "dev": true, 387 | "bin": { 388 | "flat": "cli.js" 389 | } 390 | }, 391 | "node_modules/flatten-vertex-data": { 392 | "version": "1.0.2", 393 | "resolved": "https://registry.npmjs.org/flatten-vertex-data/-/flatten-vertex-data-1.0.2.tgz", 394 | "integrity": "sha512-BvCBFK2NZqerFTdMDgqfHBwxYWnxeCkwONsw6PvBMcUXqo8U/KDWwmXhqx1x2kLIg7DqIsJfOaJFOmlua3Lxuw==", 395 | "dependencies": { 396 | "dtype": "^2.0.0" 397 | } 398 | }, 399 | "node_modules/flip-pixels": { 400 | "version": "1.0.2", 401 | "resolved": "https://registry.npmjs.org/flip-pixels/-/flip-pixels-1.0.2.tgz", 402 | "integrity": "sha512-oXbJGbjDnfJRWPC7Va38EFhd+A8JWE5/hCiKcK8qjCdbLj9DTpsq6MEudwpRTH+V4qq+Jw7d3pUgQdSr3x3mTA==" 403 | }, 404 | "node_modules/fs.realpath": { 405 | "version": "1.0.0", 406 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 407 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 408 | "dev": true, 409 | "license": "ISC" 410 | }, 411 | "node_modules/fsevents": { 412 | "version": "2.3.2", 413 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 414 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 415 | "dev": true, 416 | "hasInstallScript": true, 417 | "optional": true, 418 | "os": [ 419 | "darwin" 420 | ], 421 | "engines": { 422 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 423 | } 424 | }, 425 | "node_modules/get-caller-file": { 426 | "version": "2.0.5", 427 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 428 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 429 | "dev": true, 430 | "engines": { 431 | "node": "6.* || 8.* || >= 10.*" 432 | } 433 | }, 434 | "node_modules/glob": { 435 | "version": "8.1.0", 436 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 437 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 438 | "deprecated": "Glob versions prior to v9 are no longer supported", 439 | "dev": true, 440 | "license": "ISC", 441 | "dependencies": { 442 | "fs.realpath": "^1.0.0", 443 | "inflight": "^1.0.4", 444 | "inherits": "2", 445 | "minimatch": "^5.0.1", 446 | "once": "^1.3.0" 447 | }, 448 | "engines": { 449 | "node": ">=12" 450 | }, 451 | "funding": { 452 | "url": "https://github.com/sponsors/isaacs" 453 | } 454 | }, 455 | "node_modules/glob-parent": { 456 | "version": "5.1.2", 457 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 458 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 459 | "dev": true, 460 | "dependencies": { 461 | "is-glob": "^4.0.1" 462 | }, 463 | "engines": { 464 | "node": ">= 6" 465 | } 466 | }, 467 | "node_modules/has-flag": { 468 | "version": "4.0.0", 469 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 470 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 471 | "dev": true, 472 | "engines": { 473 | "node": ">=8" 474 | } 475 | }, 476 | "node_modules/he": { 477 | "version": "1.2.0", 478 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 479 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 480 | "dev": true, 481 | "bin": { 482 | "he": "bin/he" 483 | } 484 | }, 485 | "node_modules/image-decode": { 486 | "version": "1.2.2", 487 | "resolved": "https://registry.npmjs.org/image-decode/-/image-decode-1.2.2.tgz", 488 | "integrity": "sha512-WJSWrPNmEnWVYGkY22bA6206MKYjfGl01fdlwIp6ovdnPL2qGJyC3wQj8QqYbdblchzwgglFg8Jcb/1f6fhaTQ==", 489 | "dependencies": { 490 | "bmp-js": "^0.1.0", 491 | "buffer-to-uint8array": "^1.1.0", 492 | "image-type": "^3.0.0", 493 | "jpeg-js": "^0.3.4", 494 | "omggif": "^1.0.9", 495 | "pngjs": "^3.3.3", 496 | "to-array-buffer": "^3.0.0", 497 | "utif": "^2.0.1" 498 | } 499 | }, 500 | "node_modules/image-encode": { 501 | "version": "1.3.1", 502 | "resolved": "https://registry.npmjs.org/image-encode/-/image-encode-1.3.1.tgz", 503 | "integrity": "sha512-XlDSaqGFrW0Rn08fxJM725+h9Hfx/D9u1RVMP8IrcSRN5Ib74UgVf7yuzoS8YAxKc6HqQ8bhDSvy+rIzCUoAYg==", 504 | "dependencies": { 505 | "bmp-js": "^0.1.0", 506 | "image-palette": "^2.0.1", 507 | "image-type": "^3.0.0", 508 | "is-plain-obj": "^1.1.0", 509 | "jpeg-js": "^0.4.1", 510 | "next-pow-2": "^1.0.0", 511 | "object-assign": "^4.1.1", 512 | "omggif": "^1.0.9", 513 | "pngjs": "^3.3.3", 514 | "pxls": "^2.3.1", 515 | "to-array-buffer": "^3.0.0", 516 | "utif": "^2.0.1" 517 | } 518 | }, 519 | "node_modules/image-palette": { 520 | "version": "2.1.0", 521 | "resolved": "https://registry.npmjs.org/image-palette/-/image-palette-2.1.0.tgz", 522 | "integrity": "sha512-3ImSEWD26+xuQFdP0RWR4WSXadZwvgrFhjGNpMEapTG1tf2XrBFS2dlKK5hNgH4UIaSQlSUFRn1NeA+zULIWbQ==", 523 | "dependencies": { 524 | "color-id": "^1.1.0", 525 | "pxls": "^2.0.0", 526 | "quantize": "^1.0.2" 527 | } 528 | }, 529 | "node_modules/image-type": { 530 | "version": "3.1.0", 531 | "resolved": "https://registry.npmjs.org/image-type/-/image-type-3.1.0.tgz", 532 | "integrity": "sha512-edYRXKQ3WD2yHXFGUbwoJVn5v7j1A6Z505uZUYIfzCwOOhPGLYSc3VOucF9fqbsaUbgb37DdjOU+WV4uo7ZooQ==", 533 | "dependencies": { 534 | "file-type": "^10.9.0" 535 | }, 536 | "engines": { 537 | "node": ">=6" 538 | } 539 | }, 540 | "node_modules/inflight": { 541 | "version": "1.0.6", 542 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 543 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 544 | "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", 545 | "dev": true, 546 | "license": "ISC", 547 | "dependencies": { 548 | "once": "^1.3.0", 549 | "wrappy": "1" 550 | } 551 | }, 552 | "node_modules/inherits": { 553 | "version": "2.0.4", 554 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 555 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 556 | "dev": true, 557 | "license": "ISC" 558 | }, 559 | "node_modules/is-base64": { 560 | "version": "0.1.0", 561 | "resolved": "https://registry.npmjs.org/is-base64/-/is-base64-0.1.0.tgz", 562 | "integrity": "sha512-WRRyllsGXJM7ZN7gPTCCQ/6wNPTRDwiWdPK66l5sJzcU/oOzcIcRRf0Rux8bkpox/1yjt0F6VJRsQOIG2qz5sg==" 563 | }, 564 | "node_modules/is-binary-path": { 565 | "version": "2.1.0", 566 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 567 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 568 | "dev": true, 569 | "dependencies": { 570 | "binary-extensions": "^2.0.0" 571 | }, 572 | "engines": { 573 | "node": ">=8" 574 | } 575 | }, 576 | "node_modules/is-blob": { 577 | "version": "2.1.0", 578 | "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", 579 | "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==", 580 | "engines": { 581 | "node": ">=6" 582 | }, 583 | "funding": { 584 | "url": "https://github.com/sponsors/sindresorhus" 585 | } 586 | }, 587 | "node_modules/is-browser": { 588 | "version": "2.1.0", 589 | "resolved": "https://registry.npmjs.org/is-browser/-/is-browser-2.1.0.tgz", 590 | "integrity": "sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==" 591 | }, 592 | "node_modules/is-buffer": { 593 | "version": "2.0.5", 594 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", 595 | "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", 596 | "funding": [ 597 | { 598 | "type": "github", 599 | "url": "https://github.com/sponsors/feross" 600 | }, 601 | { 602 | "type": "patreon", 603 | "url": "https://www.patreon.com/feross" 604 | }, 605 | { 606 | "type": "consulting", 607 | "url": "https://feross.org/support" 608 | } 609 | ], 610 | "engines": { 611 | "node": ">=4" 612 | } 613 | }, 614 | "node_modules/is-extglob": { 615 | "version": "2.1.1", 616 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 617 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 618 | "dev": true, 619 | "engines": { 620 | "node": ">=0.10.0" 621 | } 622 | }, 623 | "node_modules/is-float-array": { 624 | "version": "1.0.0", 625 | "resolved": "https://registry.npmjs.org/is-float-array/-/is-float-array-1.0.0.tgz", 626 | "integrity": "sha512-4ew1Sx6B6kEAl3T3NOM0yB94J3NZnBdNt4paw0e8nY73yHHTeTEhyQ3Lj7EQEnv5LD+GxNTaT4L46jcKjjpLiQ==" 627 | }, 628 | "node_modules/is-fullwidth-code-point": { 629 | "version": "3.0.0", 630 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 631 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 632 | "dev": true, 633 | "engines": { 634 | "node": ">=8" 635 | } 636 | }, 637 | "node_modules/is-glob": { 638 | "version": "4.0.3", 639 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 640 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 641 | "dev": true, 642 | "dependencies": { 643 | "is-extglob": "^2.1.1" 644 | }, 645 | "engines": { 646 | "node": ">=0.10.0" 647 | } 648 | }, 649 | "node_modules/is-number": { 650 | "version": "7.0.0", 651 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 652 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 653 | "dev": true, 654 | "engines": { 655 | "node": ">=0.12.0" 656 | } 657 | }, 658 | "node_modules/is-plain-obj": { 659 | "version": "1.1.0", 660 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 661 | "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", 662 | "engines": { 663 | "node": ">=0.10.0" 664 | } 665 | }, 666 | "node_modules/is-unicode-supported": { 667 | "version": "0.1.0", 668 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 669 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 670 | "dev": true, 671 | "engines": { 672 | "node": ">=10" 673 | }, 674 | "funding": { 675 | "url": "https://github.com/sponsors/sindresorhus" 676 | } 677 | }, 678 | "node_modules/jpeg-js": { 679 | "version": "0.4.4", 680 | "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", 681 | "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" 682 | }, 683 | "node_modules/js-yaml": { 684 | "version": "4.1.0", 685 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 686 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 687 | "dev": true, 688 | "dependencies": { 689 | "argparse": "^2.0.1" 690 | }, 691 | "bin": { 692 | "js-yaml": "bin/js-yaml.js" 693 | } 694 | }, 695 | "node_modules/locate-path": { 696 | "version": "6.0.0", 697 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 698 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 699 | "dev": true, 700 | "dependencies": { 701 | "p-locate": "^5.0.0" 702 | }, 703 | "engines": { 704 | "node": ">=10" 705 | }, 706 | "funding": { 707 | "url": "https://github.com/sponsors/sindresorhus" 708 | } 709 | }, 710 | "node_modules/log-symbols": { 711 | "version": "4.1.0", 712 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 713 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 714 | "dev": true, 715 | "dependencies": { 716 | "chalk": "^4.1.0", 717 | "is-unicode-supported": "^0.1.0" 718 | }, 719 | "engines": { 720 | "node": ">=10" 721 | }, 722 | "funding": { 723 | "url": "https://github.com/sponsors/sindresorhus" 724 | } 725 | }, 726 | "node_modules/minimatch": { 727 | "version": "5.1.6", 728 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 729 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 730 | "dev": true, 731 | "license": "ISC", 732 | "dependencies": { 733 | "brace-expansion": "^2.0.1" 734 | }, 735 | "engines": { 736 | "node": ">=10" 737 | } 738 | }, 739 | "node_modules/mocha": { 740 | "version": "10.8.2", 741 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", 742 | "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", 743 | "dev": true, 744 | "license": "MIT", 745 | "dependencies": { 746 | "ansi-colors": "^4.1.3", 747 | "browser-stdout": "^1.3.1", 748 | "chokidar": "^3.5.3", 749 | "debug": "^4.3.5", 750 | "diff": "^5.2.0", 751 | "escape-string-regexp": "^4.0.0", 752 | "find-up": "^5.0.0", 753 | "glob": "^8.1.0", 754 | "he": "^1.2.0", 755 | "js-yaml": "^4.1.0", 756 | "log-symbols": "^4.1.0", 757 | "minimatch": "^5.1.6", 758 | "ms": "^2.1.3", 759 | "serialize-javascript": "^6.0.2", 760 | "strip-json-comments": "^3.1.1", 761 | "supports-color": "^8.1.1", 762 | "workerpool": "^6.5.1", 763 | "yargs": "^16.2.0", 764 | "yargs-parser": "^20.2.9", 765 | "yargs-unparser": "^2.0.0" 766 | }, 767 | "bin": { 768 | "_mocha": "bin/_mocha", 769 | "mocha": "bin/mocha.js" 770 | }, 771 | "engines": { 772 | "node": ">= 14.0.0" 773 | } 774 | }, 775 | "node_modules/ms": { 776 | "version": "2.1.3", 777 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 778 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 779 | "dev": true 780 | }, 781 | "node_modules/next-pow-2": { 782 | "version": "1.0.0", 783 | "resolved": "https://registry.npmjs.org/next-pow-2/-/next-pow-2-1.0.0.tgz", 784 | "integrity": "sha512-q+HqJpSkvVqOo75HUY5h1JurDXxHMvjPi5INOfZr3QiSlYUPBzRs6JZx8VPWf7pf18yg6NHUWvwfUILGxJ8ekg==" 785 | }, 786 | "node_modules/normalize-path": { 787 | "version": "3.0.0", 788 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 789 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 790 | "dev": true, 791 | "engines": { 792 | "node": ">=0.10.0" 793 | } 794 | }, 795 | "node_modules/object-assign": { 796 | "version": "4.1.1", 797 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 798 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 799 | "engines": { 800 | "node": ">=0.10.0" 801 | } 802 | }, 803 | "node_modules/object-keys": { 804 | "version": "1.1.1", 805 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 806 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 807 | "engines": { 808 | "node": ">= 0.4" 809 | } 810 | }, 811 | "node_modules/omggif": { 812 | "version": "1.0.10", 813 | "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", 814 | "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" 815 | }, 816 | "node_modules/once": { 817 | "version": "1.4.0", 818 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 819 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 820 | "dev": true, 821 | "license": "ISC", 822 | "dependencies": { 823 | "wrappy": "1" 824 | } 825 | }, 826 | "node_modules/p-limit": { 827 | "version": "3.1.0", 828 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 829 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 830 | "dev": true, 831 | "dependencies": { 832 | "yocto-queue": "^0.1.0" 833 | }, 834 | "engines": { 835 | "node": ">=10" 836 | }, 837 | "funding": { 838 | "url": "https://github.com/sponsors/sindresorhus" 839 | } 840 | }, 841 | "node_modules/p-locate": { 842 | "version": "5.0.0", 843 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 844 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 845 | "dev": true, 846 | "dependencies": { 847 | "p-limit": "^3.0.2" 848 | }, 849 | "engines": { 850 | "node": ">=10" 851 | }, 852 | "funding": { 853 | "url": "https://github.com/sponsors/sindresorhus" 854 | } 855 | }, 856 | "node_modules/pako": { 857 | "version": "1.0.11", 858 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 859 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" 860 | }, 861 | "node_modules/path-exists": { 862 | "version": "4.0.0", 863 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 864 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 865 | "dev": true, 866 | "engines": { 867 | "node": ">=8" 868 | } 869 | }, 870 | "node_modules/picomatch": { 871 | "version": "2.3.1", 872 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 873 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 874 | "dev": true, 875 | "engines": { 876 | "node": ">=8.6" 877 | }, 878 | "funding": { 879 | "url": "https://github.com/sponsors/jonschlinkert" 880 | } 881 | }, 882 | "node_modules/pngjs": { 883 | "version": "3.4.0", 884 | "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", 885 | "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", 886 | "engines": { 887 | "node": ">=4.0.0" 888 | } 889 | }, 890 | "node_modules/pxls": { 891 | "version": "2.3.2", 892 | "resolved": "https://registry.npmjs.org/pxls/-/pxls-2.3.2.tgz", 893 | "integrity": "sha512-pQkwgbLqWPcuES5iEmGa10OlCf5xG0blkIF3dg7PpRZShbTYcvAdfFfGL03SMrkaSUaa/V0UpN9HWg40O2AIIw==", 894 | "dependencies": { 895 | "arr-flatten": "^1.1.0", 896 | "compute-dims": "^1.1.0", 897 | "flip-pixels": "^1.0.2", 898 | "is-browser": "^2.1.0", 899 | "is-buffer": "^2.0.3", 900 | "to-uint8": "^1.4.1" 901 | } 902 | }, 903 | "node_modules/quantize": { 904 | "version": "1.0.2", 905 | "resolved": "https://registry.npmjs.org/quantize/-/quantize-1.0.2.tgz", 906 | "integrity": "sha512-25P7wI2UoDbIQsQp50ARkt+5pwPsOq7G/BqvT5xAbapnRoNWMN8/p55H9TXd5MuENiJnm5XICB2H2aDZGwts7w==", 907 | "engines": { 908 | "node": ">=0.10.21" 909 | } 910 | }, 911 | "node_modules/randombytes": { 912 | "version": "2.1.0", 913 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 914 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 915 | "dev": true, 916 | "license": "MIT", 917 | "dependencies": { 918 | "safe-buffer": "^5.1.0" 919 | } 920 | }, 921 | "node_modules/readdirp": { 922 | "version": "3.6.0", 923 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 924 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 925 | "dev": true, 926 | "dependencies": { 927 | "picomatch": "^2.2.1" 928 | }, 929 | "engines": { 930 | "node": ">=8.10.0" 931 | } 932 | }, 933 | "node_modules/regex-regex": { 934 | "version": "1.0.0", 935 | "resolved": "https://registry.npmjs.org/regex-regex/-/regex-regex-1.0.0.tgz", 936 | "integrity": "sha512-FPbEhFTLpxKNgHKay3zMfkHzFK2ebViAlyvsz5euO4kwekH0T6fAL4Sdo2CgQ7Y1tGB5HqQm8SBq7pW5GegvVA==" 937 | }, 938 | "node_modules/require-directory": { 939 | "version": "2.1.1", 940 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 941 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 942 | "dev": true, 943 | "engines": { 944 | "node": ">=0.10.0" 945 | } 946 | }, 947 | "node_modules/safe-buffer": { 948 | "version": "5.2.1", 949 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 950 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 951 | "dev": true, 952 | "funding": [ 953 | { 954 | "type": "github", 955 | "url": "https://github.com/sponsors/feross" 956 | }, 957 | { 958 | "type": "patreon", 959 | "url": "https://www.patreon.com/feross" 960 | }, 961 | { 962 | "type": "consulting", 963 | "url": "https://feross.org/support" 964 | } 965 | ], 966 | "license": "MIT" 967 | }, 968 | "node_modules/serialize-javascript": { 969 | "version": "6.0.2", 970 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 971 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 972 | "dev": true, 973 | "license": "BSD-3-Clause", 974 | "dependencies": { 975 | "randombytes": "^2.1.0" 976 | } 977 | }, 978 | "node_modules/string-to-arraybuffer": { 979 | "version": "1.0.2", 980 | "resolved": "https://registry.npmjs.org/string-to-arraybuffer/-/string-to-arraybuffer-1.0.2.tgz", 981 | "integrity": "sha512-DaGZidzi93dwjQen5I2osxR9ERS/R7B1PFyufNMnzhj+fmlDQAc1DSDIJVJhgI8Oq221efIMbABUBdPHDRt43Q==", 982 | "dependencies": { 983 | "atob-lite": "^2.0.0", 984 | "is-base64": "^0.1.0" 985 | } 986 | }, 987 | "node_modules/string-width": { 988 | "version": "4.2.3", 989 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 990 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 991 | "dev": true, 992 | "dependencies": { 993 | "emoji-regex": "^8.0.0", 994 | "is-fullwidth-code-point": "^3.0.0", 995 | "strip-ansi": "^6.0.1" 996 | }, 997 | "engines": { 998 | "node": ">=8" 999 | } 1000 | }, 1001 | "node_modules/strip-ansi": { 1002 | "version": "6.0.1", 1003 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1004 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1005 | "dev": true, 1006 | "dependencies": { 1007 | "ansi-regex": "^5.0.1" 1008 | }, 1009 | "engines": { 1010 | "node": ">=8" 1011 | } 1012 | }, 1013 | "node_modules/strip-json-comments": { 1014 | "version": "3.1.1", 1015 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1016 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1017 | "dev": true, 1018 | "engines": { 1019 | "node": ">=8" 1020 | }, 1021 | "funding": { 1022 | "url": "https://github.com/sponsors/sindresorhus" 1023 | } 1024 | }, 1025 | "node_modules/supports-color": { 1026 | "version": "8.1.1", 1027 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1028 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1029 | "dev": true, 1030 | "dependencies": { 1031 | "has-flag": "^4.0.0" 1032 | }, 1033 | "engines": { 1034 | "node": ">=10" 1035 | }, 1036 | "funding": { 1037 | "url": "https://github.com/chalk/supports-color?sponsor=1" 1038 | } 1039 | }, 1040 | "node_modules/to-array-buffer": { 1041 | "version": "3.2.0", 1042 | "resolved": "https://registry.npmjs.org/to-array-buffer/-/to-array-buffer-3.2.0.tgz", 1043 | "integrity": "sha512-zN33mwi0gpL+7xW1ITLfJ48CEj6ZQW0ZAP0MU+2W3kEY0PAIncyuxmD4OqkUVhPAbTP7amq9j/iwvZKYS+lzSQ==", 1044 | "dependencies": { 1045 | "flatten-vertex-data": "^1.0.2", 1046 | "is-blob": "^2.0.1", 1047 | "string-to-arraybuffer": "^1.0.0" 1048 | } 1049 | }, 1050 | "node_modules/to-regex-range": { 1051 | "version": "5.0.1", 1052 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1053 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1054 | "dev": true, 1055 | "dependencies": { 1056 | "is-number": "^7.0.0" 1057 | }, 1058 | "engines": { 1059 | "node": ">=8.0" 1060 | } 1061 | }, 1062 | "node_modules/to-uint8": { 1063 | "version": "1.4.1", 1064 | "resolved": "https://registry.npmjs.org/to-uint8/-/to-uint8-1.4.1.tgz", 1065 | "integrity": "sha512-o+ochsMlTZyucbww8It401FC2Rx+OP2RpDeYbA6h+y9HgedDl1UjdsJ9CmzKEG7AFP9es5PmJ4eDWeeeXihESg==", 1066 | "dependencies": { 1067 | "arr-flatten": "^1.1.0", 1068 | "clamp": "^1.0.1", 1069 | "is-base64": "^0.1.0", 1070 | "is-float-array": "^1.0.0", 1071 | "to-array-buffer": "^3.0.0" 1072 | } 1073 | }, 1074 | "node_modules/type-name": { 1075 | "version": "2.0.2", 1076 | "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", 1077 | "integrity": "sha512-kkgkuqR/jKdKO5oh/I2SMu2dGbLXoJq0zkdgbxaqYK+hr9S9edwVVGf+tMUFTx2gH9TN2+Zu9JZ/Njonb3cjhA==" 1078 | }, 1079 | "node_modules/utif": { 1080 | "version": "2.0.1", 1081 | "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", 1082 | "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", 1083 | "dependencies": { 1084 | "pako": "^1.0.5" 1085 | } 1086 | }, 1087 | "node_modules/utils-copy": { 1088 | "version": "1.1.1", 1089 | "resolved": "https://registry.npmjs.org/utils-copy/-/utils-copy-1.1.1.tgz", 1090 | "integrity": "sha512-+NhJVV+PcxjdpkMrVTqXhQHPldlFGca5XR9YnGyNn7kQ0fMi+DqNLzdnhJ4TJ1HNy/HzB7c+FPg3y+4icY99ZA==", 1091 | "dependencies": { 1092 | "const-pinf-float64": "^1.0.0", 1093 | "object-keys": "^1.0.9", 1094 | "type-name": "^2.0.0", 1095 | "utils-copy-error": "^1.0.0", 1096 | "utils-indexof": "^1.0.0", 1097 | "utils-regex-from-string": "^1.0.0", 1098 | "validate.io-array": "^1.0.3", 1099 | "validate.io-buffer": "^1.0.1", 1100 | "validate.io-nonnegative-integer": "^1.0.0" 1101 | } 1102 | }, 1103 | "node_modules/utils-copy-error": { 1104 | "version": "1.0.1", 1105 | "resolved": "https://registry.npmjs.org/utils-copy-error/-/utils-copy-error-1.0.1.tgz", 1106 | "integrity": "sha512-RbJcGPZ6Ru2HQk9SWkvbdWNPX58pt4MO5uXsOQRu4LEGWB3LglkRrmnE/Ph1qWg6ywQ0qj95wTz1OeqQ2l8DCA==", 1107 | "dependencies": { 1108 | "object-keys": "^1.0.9", 1109 | "utils-copy": "^1.1.0" 1110 | } 1111 | }, 1112 | "node_modules/utils-indexof": { 1113 | "version": "1.0.0", 1114 | "resolved": "https://registry.npmjs.org/utils-indexof/-/utils-indexof-1.0.0.tgz", 1115 | "integrity": "sha512-76QBfRJpn4A0P5uTO1x00x+Yog36w2Pab0n+aT9UfUvVa4l+e8k3p7YwNpDvfQ6+aKGZdxZpxcNotNS4YjFcyg==", 1116 | "dependencies": { 1117 | "validate.io-array-like": "^1.0.1", 1118 | "validate.io-integer-primitive": "^1.0.0" 1119 | } 1120 | }, 1121 | "node_modules/utils-regex-from-string": { 1122 | "version": "1.0.0", 1123 | "resolved": "https://registry.npmjs.org/utils-regex-from-string/-/utils-regex-from-string-1.0.0.tgz", 1124 | "integrity": "sha512-xKfdmEF19iUu9TKxFiohQUlQTuqYdV80/CxHiudVI37iEV/OA4HHlXZoc4qvuO1B74EcBVpErBreRO/dpdLeYA==", 1125 | "dependencies": { 1126 | "regex-regex": "^1.0.0", 1127 | "validate.io-string-primitive": "^1.0.0" 1128 | } 1129 | }, 1130 | "node_modules/validate.io-array": { 1131 | "version": "1.0.6", 1132 | "resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz", 1133 | "integrity": "sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==" 1134 | }, 1135 | "node_modules/validate.io-array-like": { 1136 | "version": "1.0.2", 1137 | "resolved": "https://registry.npmjs.org/validate.io-array-like/-/validate.io-array-like-1.0.2.tgz", 1138 | "integrity": "sha512-rGLiN0cvY9OWzQcWP+RtqZR/MK9RUz3gKDTCcRLtEQ/BvlanMF5PyqtVIN+CgrIBCv/ypfme9v7r4yMJPYpbNA==", 1139 | "dependencies": { 1140 | "const-max-uint32": "^1.0.2", 1141 | "validate.io-integer-primitive": "^1.0.0" 1142 | } 1143 | }, 1144 | "node_modules/validate.io-buffer": { 1145 | "version": "1.0.2", 1146 | "resolved": "https://registry.npmjs.org/validate.io-buffer/-/validate.io-buffer-1.0.2.tgz", 1147 | "integrity": "sha512-6Tad+/QYOxWEXsesKYak1mHOzGdPYS4QeHFImWn7ECi4GR0x3vh7+6+1yoLKNXiklKuTFOxHLG3kZy9tPX0GvQ==" 1148 | }, 1149 | "node_modules/validate.io-integer": { 1150 | "version": "1.0.5", 1151 | "resolved": "https://registry.npmjs.org/validate.io-integer/-/validate.io-integer-1.0.5.tgz", 1152 | "integrity": "sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==", 1153 | "dependencies": { 1154 | "validate.io-number": "^1.0.3" 1155 | } 1156 | }, 1157 | "node_modules/validate.io-integer-primitive": { 1158 | "version": "1.0.0", 1159 | "resolved": "https://registry.npmjs.org/validate.io-integer-primitive/-/validate.io-integer-primitive-1.0.0.tgz", 1160 | "integrity": "sha512-4ARGKA4FImVWJgrgttLYsYJmDGwxlhLfDCdq09gyVgohLKKRUfD3VAo1L2vTRCLt6hDhDtFKdZiuYUTWyBggwg==", 1161 | "dependencies": { 1162 | "validate.io-number-primitive": "^1.0.0" 1163 | } 1164 | }, 1165 | "node_modules/validate.io-matrix-like": { 1166 | "version": "1.0.2", 1167 | "resolved": "https://registry.npmjs.org/validate.io-matrix-like/-/validate.io-matrix-like-1.0.2.tgz", 1168 | "integrity": "sha512-86mqLUIkZCRAOVKZvpCB7sDCw1dKBjBkY+C6WO/wLo/jQx0sOqQZz3LLtDw0DCfuAKxRuhSmIpX3nzr0nWrbdw==" 1169 | }, 1170 | "node_modules/validate.io-ndarray-like": { 1171 | "version": "1.0.0", 1172 | "resolved": "https://registry.npmjs.org/validate.io-ndarray-like/-/validate.io-ndarray-like-1.0.0.tgz", 1173 | "integrity": "sha512-OV85AosxraPFSXJwzv/d7Cu5/dLiyLtsHmxtHTJcHW1N0uscd0eJ2df1Zk+HdID0eUctUllW/1YuQPUJFv1pTA==" 1174 | }, 1175 | "node_modules/validate.io-nonnegative-integer": { 1176 | "version": "1.0.0", 1177 | "resolved": "https://registry.npmjs.org/validate.io-nonnegative-integer/-/validate.io-nonnegative-integer-1.0.0.tgz", 1178 | "integrity": "sha512-uOMekPwcl84yg8NR7zgIZCZ9pHCtd9CK1Ri51N+ZJLTe1HyLbmdFdy7ZmfkiHkMvB1pOxeQmd1/LBjKhUD1L3A==", 1179 | "dependencies": { 1180 | "validate.io-integer": "^1.0.5" 1181 | } 1182 | }, 1183 | "node_modules/validate.io-number": { 1184 | "version": "1.0.3", 1185 | "resolved": "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz", 1186 | "integrity": "sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==" 1187 | }, 1188 | "node_modules/validate.io-number-primitive": { 1189 | "version": "1.0.0", 1190 | "resolved": "https://registry.npmjs.org/validate.io-number-primitive/-/validate.io-number-primitive-1.0.0.tgz", 1191 | "integrity": "sha512-8rlCe7N0TRTd50dwk4WNoMXNbX/4+RdtqE3TO6Bk0GJvAgbQlfL5DGr/Pl9ZLbWR6CutMjE2cu+yOoCnFWk+Qw==" 1192 | }, 1193 | "node_modules/validate.io-positive-integer": { 1194 | "version": "1.0.0", 1195 | "resolved": "https://registry.npmjs.org/validate.io-positive-integer/-/validate.io-positive-integer-1.0.0.tgz", 1196 | "integrity": "sha512-eg4LSdyqjICNUZWRilcQ5l+YayRlu6yi+GQsWw1bCmtG9yayOPmLa1fPymEHPPhbvWPAv3w0LLbCsf03pBHZkg==", 1197 | "dependencies": { 1198 | "validate.io-integer": "^1.0.5" 1199 | } 1200 | }, 1201 | "node_modules/validate.io-string-primitive": { 1202 | "version": "1.0.1", 1203 | "resolved": "https://registry.npmjs.org/validate.io-string-primitive/-/validate.io-string-primitive-1.0.1.tgz", 1204 | "integrity": "sha512-TORbkLMdOFkEbPtfdx76FSVQGSAzyUEMxI+pBq5pfFm1ZzIesP+XiGc6eIK75aKu7RA7a8EcqUv5OrY5wfog5w==" 1205 | }, 1206 | "node_modules/workerpool": { 1207 | "version": "6.5.1", 1208 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", 1209 | "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", 1210 | "dev": true, 1211 | "license": "Apache-2.0" 1212 | }, 1213 | "node_modules/wrap-ansi": { 1214 | "version": "7.0.0", 1215 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1216 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1217 | "dev": true, 1218 | "dependencies": { 1219 | "ansi-styles": "^4.0.0", 1220 | "string-width": "^4.1.0", 1221 | "strip-ansi": "^6.0.0" 1222 | }, 1223 | "engines": { 1224 | "node": ">=10" 1225 | }, 1226 | "funding": { 1227 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1228 | } 1229 | }, 1230 | "node_modules/wrappy": { 1231 | "version": "1.0.2", 1232 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1233 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1234 | "dev": true, 1235 | "license": "ISC" 1236 | }, 1237 | "node_modules/y18n": { 1238 | "version": "5.0.8", 1239 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1240 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1241 | "dev": true, 1242 | "engines": { 1243 | "node": ">=10" 1244 | } 1245 | }, 1246 | "node_modules/yargs": { 1247 | "version": "16.2.0", 1248 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 1249 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 1250 | "dev": true, 1251 | "dependencies": { 1252 | "cliui": "^7.0.2", 1253 | "escalade": "^3.1.1", 1254 | "get-caller-file": "^2.0.5", 1255 | "require-directory": "^2.1.1", 1256 | "string-width": "^4.2.0", 1257 | "y18n": "^5.0.5", 1258 | "yargs-parser": "^20.2.2" 1259 | }, 1260 | "engines": { 1261 | "node": ">=10" 1262 | } 1263 | }, 1264 | "node_modules/yargs-parser": { 1265 | "version": "20.2.9", 1266 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 1267 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 1268 | "dev": true, 1269 | "license": "ISC", 1270 | "engines": { 1271 | "node": ">=10" 1272 | } 1273 | }, 1274 | "node_modules/yargs-unparser": { 1275 | "version": "2.0.0", 1276 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 1277 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 1278 | "dev": true, 1279 | "dependencies": { 1280 | "camelcase": "^6.0.0", 1281 | "decamelize": "^4.0.0", 1282 | "flat": "^5.0.2", 1283 | "is-plain-obj": "^2.1.0" 1284 | }, 1285 | "engines": { 1286 | "node": ">=10" 1287 | } 1288 | }, 1289 | "node_modules/yargs-unparser/node_modules/is-plain-obj": { 1290 | "version": "2.1.0", 1291 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 1292 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 1293 | "dev": true, 1294 | "engines": { 1295 | "node": ">=8" 1296 | } 1297 | }, 1298 | "node_modules/yocto-queue": { 1299 | "version": "0.1.0", 1300 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1301 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1302 | "dev": true, 1303 | "engines": { 1304 | "node": ">=10" 1305 | }, 1306 | "funding": { 1307 | "url": "https://github.com/sponsors/sindresorhus" 1308 | } 1309 | } 1310 | }, 1311 | "dependencies": { 1312 | "ansi-colors": { 1313 | "version": "4.1.3", 1314 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", 1315 | "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", 1316 | "dev": true 1317 | }, 1318 | "ansi-regex": { 1319 | "version": "5.0.1", 1320 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1321 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1322 | "dev": true 1323 | }, 1324 | "ansi-styles": { 1325 | "version": "4.3.0", 1326 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1327 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1328 | "dev": true, 1329 | "requires": { 1330 | "color-convert": "^2.0.1" 1331 | } 1332 | }, 1333 | "anymatch": { 1334 | "version": "3.1.2", 1335 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 1336 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 1337 | "dev": true, 1338 | "requires": { 1339 | "normalize-path": "^3.0.0", 1340 | "picomatch": "^2.0.4" 1341 | } 1342 | }, 1343 | "argparse": { 1344 | "version": "2.0.1", 1345 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1346 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1347 | "dev": true 1348 | }, 1349 | "arr-flatten": { 1350 | "version": "1.1.0", 1351 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 1352 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" 1353 | }, 1354 | "atob-lite": { 1355 | "version": "2.0.0", 1356 | "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", 1357 | "integrity": "sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw==" 1358 | }, 1359 | "balanced-match": { 1360 | "version": "1.0.2", 1361 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1362 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1363 | "dev": true 1364 | }, 1365 | "binary-extensions": { 1366 | "version": "2.2.0", 1367 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 1368 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 1369 | "dev": true 1370 | }, 1371 | "bmp-js": { 1372 | "version": "0.1.0", 1373 | "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", 1374 | "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" 1375 | }, 1376 | "brace-expansion": { 1377 | "version": "2.0.1", 1378 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1379 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1380 | "dev": true, 1381 | "requires": { 1382 | "balanced-match": "^1.0.0" 1383 | } 1384 | }, 1385 | "braces": { 1386 | "version": "3.0.3", 1387 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1388 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1389 | "dev": true, 1390 | "requires": { 1391 | "fill-range": "^7.1.1" 1392 | } 1393 | }, 1394 | "browser-stdout": { 1395 | "version": "1.3.1", 1396 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 1397 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 1398 | "dev": true 1399 | }, 1400 | "buffer-to-uint8array": { 1401 | "version": "1.1.0", 1402 | "resolved": "https://registry.npmjs.org/buffer-to-uint8array/-/buffer-to-uint8array-1.1.0.tgz", 1403 | "integrity": "sha512-JVTSbtA6YuOGdu5NL0ffizsBwuwbTXfV7OC91FhazMz9UKP/KlDS+Z7wuiSRClbnTQz52fJgVXI9YDXQRVl2sQ==" 1404 | }, 1405 | "camelcase": { 1406 | "version": "6.3.0", 1407 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 1408 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 1409 | "dev": true 1410 | }, 1411 | "chalk": { 1412 | "version": "4.1.2", 1413 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1414 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1415 | "dev": true, 1416 | "requires": { 1417 | "ansi-styles": "^4.1.0", 1418 | "supports-color": "^7.1.0" 1419 | }, 1420 | "dependencies": { 1421 | "supports-color": { 1422 | "version": "7.2.0", 1423 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1424 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1425 | "dev": true, 1426 | "requires": { 1427 | "has-flag": "^4.0.0" 1428 | } 1429 | } 1430 | } 1431 | }, 1432 | "chokidar": { 1433 | "version": "3.5.3", 1434 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 1435 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 1436 | "dev": true, 1437 | "requires": { 1438 | "anymatch": "~3.1.2", 1439 | "braces": "~3.0.2", 1440 | "fsevents": "~2.3.2", 1441 | "glob-parent": "~5.1.2", 1442 | "is-binary-path": "~2.1.0", 1443 | "is-glob": "~4.0.1", 1444 | "normalize-path": "~3.0.0", 1445 | "readdirp": "~3.6.0" 1446 | } 1447 | }, 1448 | "clamp": { 1449 | "version": "1.0.1", 1450 | "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz", 1451 | "integrity": "sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==" 1452 | }, 1453 | "cliui": { 1454 | "version": "7.0.4", 1455 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 1456 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 1457 | "dev": true, 1458 | "requires": { 1459 | "string-width": "^4.2.0", 1460 | "strip-ansi": "^6.0.0", 1461 | "wrap-ansi": "^7.0.0" 1462 | } 1463 | }, 1464 | "color-convert": { 1465 | "version": "2.0.1", 1466 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1467 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1468 | "dev": true, 1469 | "requires": { 1470 | "color-name": "~1.1.4" 1471 | } 1472 | }, 1473 | "color-id": { 1474 | "version": "1.1.0", 1475 | "resolved": "https://registry.npmjs.org/color-id/-/color-id-1.1.0.tgz", 1476 | "integrity": "sha512-2iRtAn6dC/6/G7bBIo0uupVrIne1NsQJvJxZOBCzQOfk7jRq97feaDZ3RdzuHakRXXnHGNwglto3pqtRx1sX0g==", 1477 | "requires": { 1478 | "clamp": "^1.0.1" 1479 | } 1480 | }, 1481 | "color-name": { 1482 | "version": "1.1.4", 1483 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1484 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1485 | "dev": true 1486 | }, 1487 | "compute-dims": { 1488 | "version": "1.1.0", 1489 | "resolved": "https://registry.npmjs.org/compute-dims/-/compute-dims-1.1.0.tgz", 1490 | "integrity": "sha512-YHMiIKjH/8Eom8zATk3g8/lH3HxGCZcVQyEfEoVrfWI7od/WRpTgRGShnei3jArYSx77mQqPxZNokjGHCdLfxg==", 1491 | "requires": { 1492 | "utils-copy": "^1.0.0", 1493 | "validate.io-array": "^1.0.6", 1494 | "validate.io-matrix-like": "^1.0.2", 1495 | "validate.io-ndarray-like": "^1.0.0", 1496 | "validate.io-positive-integer": "^1.0.0" 1497 | } 1498 | }, 1499 | "const-max-uint32": { 1500 | "version": "1.0.2", 1501 | "resolved": "https://registry.npmjs.org/const-max-uint32/-/const-max-uint32-1.0.2.tgz", 1502 | "integrity": "sha512-T8/9bffg5RThuejasJWrwqxs3Q0fsJvyl7/33IB6svroD8JC93E7X60AuuOnDE8RlP6Jlb5FxmlrVDpl9KiU2Q==" 1503 | }, 1504 | "const-pinf-float64": { 1505 | "version": "1.0.0", 1506 | "resolved": "https://registry.npmjs.org/const-pinf-float64/-/const-pinf-float64-1.0.0.tgz", 1507 | "integrity": "sha512-wfs+V4HdSN7C3CWJWR7hVa24yTPn3mDJthwhRIObZBh6UjTjkUMUrCP3UrNGozB/HjTpcScnGXtQUNa+yjsIJQ==" 1508 | }, 1509 | "debug": { 1510 | "version": "4.4.0", 1511 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1512 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1513 | "dev": true, 1514 | "requires": { 1515 | "ms": "^2.1.3" 1516 | } 1517 | }, 1518 | "decamelize": { 1519 | "version": "4.0.0", 1520 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 1521 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 1522 | "dev": true 1523 | }, 1524 | "diff": { 1525 | "version": "5.2.0", 1526 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", 1527 | "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", 1528 | "dev": true 1529 | }, 1530 | "dtype": { 1531 | "version": "2.0.0", 1532 | "resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz", 1533 | "integrity": "sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg==" 1534 | }, 1535 | "emoji-regex": { 1536 | "version": "8.0.0", 1537 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1538 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1539 | "dev": true 1540 | }, 1541 | "escalade": { 1542 | "version": "3.1.1", 1543 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1544 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1545 | "dev": true 1546 | }, 1547 | "escape-string-regexp": { 1548 | "version": "4.0.0", 1549 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1550 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1551 | "dev": true 1552 | }, 1553 | "file-type": { 1554 | "version": "10.11.0", 1555 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", 1556 | "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==" 1557 | }, 1558 | "fill-range": { 1559 | "version": "7.1.1", 1560 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1561 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1562 | "dev": true, 1563 | "requires": { 1564 | "to-regex-range": "^5.0.1" 1565 | } 1566 | }, 1567 | "find-up": { 1568 | "version": "5.0.0", 1569 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1570 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1571 | "dev": true, 1572 | "requires": { 1573 | "locate-path": "^6.0.0", 1574 | "path-exists": "^4.0.0" 1575 | } 1576 | }, 1577 | "flat": { 1578 | "version": "5.0.2", 1579 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1580 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1581 | "dev": true 1582 | }, 1583 | "flatten-vertex-data": { 1584 | "version": "1.0.2", 1585 | "resolved": "https://registry.npmjs.org/flatten-vertex-data/-/flatten-vertex-data-1.0.2.tgz", 1586 | "integrity": "sha512-BvCBFK2NZqerFTdMDgqfHBwxYWnxeCkwONsw6PvBMcUXqo8U/KDWwmXhqx1x2kLIg7DqIsJfOaJFOmlua3Lxuw==", 1587 | "requires": { 1588 | "dtype": "^2.0.0" 1589 | } 1590 | }, 1591 | "flip-pixels": { 1592 | "version": "1.0.2", 1593 | "resolved": "https://registry.npmjs.org/flip-pixels/-/flip-pixels-1.0.2.tgz", 1594 | "integrity": "sha512-oXbJGbjDnfJRWPC7Va38EFhd+A8JWE5/hCiKcK8qjCdbLj9DTpsq6MEudwpRTH+V4qq+Jw7d3pUgQdSr3x3mTA==" 1595 | }, 1596 | "fs.realpath": { 1597 | "version": "1.0.0", 1598 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1599 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1600 | "dev": true 1601 | }, 1602 | "fsevents": { 1603 | "version": "2.3.2", 1604 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1605 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1606 | "dev": true, 1607 | "optional": true 1608 | }, 1609 | "get-caller-file": { 1610 | "version": "2.0.5", 1611 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1612 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1613 | "dev": true 1614 | }, 1615 | "glob": { 1616 | "version": "8.1.0", 1617 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 1618 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 1619 | "dev": true, 1620 | "requires": { 1621 | "fs.realpath": "^1.0.0", 1622 | "inflight": "^1.0.4", 1623 | "inherits": "2", 1624 | "minimatch": "^5.0.1", 1625 | "once": "^1.3.0" 1626 | } 1627 | }, 1628 | "glob-parent": { 1629 | "version": "5.1.2", 1630 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1631 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1632 | "dev": true, 1633 | "requires": { 1634 | "is-glob": "^4.0.1" 1635 | } 1636 | }, 1637 | "has-flag": { 1638 | "version": "4.0.0", 1639 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1640 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1641 | "dev": true 1642 | }, 1643 | "he": { 1644 | "version": "1.2.0", 1645 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1646 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1647 | "dev": true 1648 | }, 1649 | "image-decode": { 1650 | "version": "1.2.2", 1651 | "resolved": "https://registry.npmjs.org/image-decode/-/image-decode-1.2.2.tgz", 1652 | "integrity": "sha512-WJSWrPNmEnWVYGkY22bA6206MKYjfGl01fdlwIp6ovdnPL2qGJyC3wQj8QqYbdblchzwgglFg8Jcb/1f6fhaTQ==", 1653 | "requires": { 1654 | "bmp-js": "^0.1.0", 1655 | "buffer-to-uint8array": "^1.1.0", 1656 | "image-type": "^3.0.0", 1657 | "jpeg-js": ">=0.4.4", 1658 | "omggif": "^1.0.9", 1659 | "pngjs": "^3.3.3", 1660 | "to-array-buffer": "^3.0.0", 1661 | "utif": "^2.0.1" 1662 | } 1663 | }, 1664 | "image-encode": { 1665 | "version": "1.3.1", 1666 | "resolved": "https://registry.npmjs.org/image-encode/-/image-encode-1.3.1.tgz", 1667 | "integrity": "sha512-XlDSaqGFrW0Rn08fxJM725+h9Hfx/D9u1RVMP8IrcSRN5Ib74UgVf7yuzoS8YAxKc6HqQ8bhDSvy+rIzCUoAYg==", 1668 | "requires": { 1669 | "bmp-js": "^0.1.0", 1670 | "image-palette": "^2.0.1", 1671 | "image-type": "^3.0.0", 1672 | "is-plain-obj": "^1.1.0", 1673 | "jpeg-js": "^0.4.1", 1674 | "next-pow-2": "^1.0.0", 1675 | "object-assign": "^4.1.1", 1676 | "omggif": "^1.0.9", 1677 | "pngjs": "^3.3.3", 1678 | "pxls": "^2.3.1", 1679 | "to-array-buffer": "^3.0.0", 1680 | "utif": "^2.0.1" 1681 | } 1682 | }, 1683 | "image-palette": { 1684 | "version": "2.1.0", 1685 | "resolved": "https://registry.npmjs.org/image-palette/-/image-palette-2.1.0.tgz", 1686 | "integrity": "sha512-3ImSEWD26+xuQFdP0RWR4WSXadZwvgrFhjGNpMEapTG1tf2XrBFS2dlKK5hNgH4UIaSQlSUFRn1NeA+zULIWbQ==", 1687 | "requires": { 1688 | "color-id": "^1.1.0", 1689 | "pxls": "^2.0.0", 1690 | "quantize": "^1.0.2" 1691 | } 1692 | }, 1693 | "image-type": { 1694 | "version": "3.1.0", 1695 | "resolved": "https://registry.npmjs.org/image-type/-/image-type-3.1.0.tgz", 1696 | "integrity": "sha512-edYRXKQ3WD2yHXFGUbwoJVn5v7j1A6Z505uZUYIfzCwOOhPGLYSc3VOucF9fqbsaUbgb37DdjOU+WV4uo7ZooQ==", 1697 | "requires": { 1698 | "file-type": "^10.9.0" 1699 | } 1700 | }, 1701 | "inflight": { 1702 | "version": "1.0.6", 1703 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1704 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1705 | "dev": true, 1706 | "requires": { 1707 | "once": "^1.3.0", 1708 | "wrappy": "1" 1709 | } 1710 | }, 1711 | "inherits": { 1712 | "version": "2.0.4", 1713 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1714 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1715 | "dev": true 1716 | }, 1717 | "is-base64": { 1718 | "version": "0.1.0", 1719 | "resolved": "https://registry.npmjs.org/is-base64/-/is-base64-0.1.0.tgz", 1720 | "integrity": "sha512-WRRyllsGXJM7ZN7gPTCCQ/6wNPTRDwiWdPK66l5sJzcU/oOzcIcRRf0Rux8bkpox/1yjt0F6VJRsQOIG2qz5sg==" 1721 | }, 1722 | "is-binary-path": { 1723 | "version": "2.1.0", 1724 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1725 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1726 | "dev": true, 1727 | "requires": { 1728 | "binary-extensions": "^2.0.0" 1729 | } 1730 | }, 1731 | "is-blob": { 1732 | "version": "2.1.0", 1733 | "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", 1734 | "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==" 1735 | }, 1736 | "is-browser": { 1737 | "version": "2.1.0", 1738 | "resolved": "https://registry.npmjs.org/is-browser/-/is-browser-2.1.0.tgz", 1739 | "integrity": "sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==" 1740 | }, 1741 | "is-buffer": { 1742 | "version": "2.0.5", 1743 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", 1744 | "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" 1745 | }, 1746 | "is-extglob": { 1747 | "version": "2.1.1", 1748 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1749 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1750 | "dev": true 1751 | }, 1752 | "is-float-array": { 1753 | "version": "1.0.0", 1754 | "resolved": "https://registry.npmjs.org/is-float-array/-/is-float-array-1.0.0.tgz", 1755 | "integrity": "sha512-4ew1Sx6B6kEAl3T3NOM0yB94J3NZnBdNt4paw0e8nY73yHHTeTEhyQ3Lj7EQEnv5LD+GxNTaT4L46jcKjjpLiQ==" 1756 | }, 1757 | "is-fullwidth-code-point": { 1758 | "version": "3.0.0", 1759 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1760 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1761 | "dev": true 1762 | }, 1763 | "is-glob": { 1764 | "version": "4.0.3", 1765 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1766 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1767 | "dev": true, 1768 | "requires": { 1769 | "is-extglob": "^2.1.1" 1770 | } 1771 | }, 1772 | "is-number": { 1773 | "version": "7.0.0", 1774 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1775 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1776 | "dev": true 1777 | }, 1778 | "is-plain-obj": { 1779 | "version": "1.1.0", 1780 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 1781 | "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" 1782 | }, 1783 | "is-unicode-supported": { 1784 | "version": "0.1.0", 1785 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 1786 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 1787 | "dev": true 1788 | }, 1789 | "jpeg-js": { 1790 | "version": "0.4.4", 1791 | "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", 1792 | "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" 1793 | }, 1794 | "js-yaml": { 1795 | "version": "4.1.0", 1796 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1797 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1798 | "dev": true, 1799 | "requires": { 1800 | "argparse": "^2.0.1" 1801 | } 1802 | }, 1803 | "locate-path": { 1804 | "version": "6.0.0", 1805 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1806 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1807 | "dev": true, 1808 | "requires": { 1809 | "p-locate": "^5.0.0" 1810 | } 1811 | }, 1812 | "log-symbols": { 1813 | "version": "4.1.0", 1814 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 1815 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 1816 | "dev": true, 1817 | "requires": { 1818 | "chalk": "^4.1.0", 1819 | "is-unicode-supported": "^0.1.0" 1820 | } 1821 | }, 1822 | "minimatch": { 1823 | "version": "5.1.6", 1824 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1825 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1826 | "dev": true, 1827 | "requires": { 1828 | "brace-expansion": "^2.0.1" 1829 | } 1830 | }, 1831 | "mocha": { 1832 | "version": "10.8.2", 1833 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", 1834 | "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", 1835 | "dev": true, 1836 | "requires": { 1837 | "ansi-colors": "^4.1.3", 1838 | "browser-stdout": "^1.3.1", 1839 | "chokidar": "^3.5.3", 1840 | "debug": "^4.3.5", 1841 | "diff": "^5.2.0", 1842 | "escape-string-regexp": "^4.0.0", 1843 | "find-up": "^5.0.0", 1844 | "glob": "^8.1.0", 1845 | "he": "^1.2.0", 1846 | "js-yaml": "^4.1.0", 1847 | "log-symbols": "^4.1.0", 1848 | "minimatch": "^5.1.6", 1849 | "ms": "^2.1.3", 1850 | "serialize-javascript": "^6.0.2", 1851 | "strip-json-comments": "^3.1.1", 1852 | "supports-color": "^8.1.1", 1853 | "workerpool": "^6.5.1", 1854 | "yargs": "^16.2.0", 1855 | "yargs-parser": "^20.2.9", 1856 | "yargs-unparser": "^2.0.0" 1857 | } 1858 | }, 1859 | "ms": { 1860 | "version": "2.1.3", 1861 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1862 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1863 | "dev": true 1864 | }, 1865 | "next-pow-2": { 1866 | "version": "1.0.0", 1867 | "resolved": "https://registry.npmjs.org/next-pow-2/-/next-pow-2-1.0.0.tgz", 1868 | "integrity": "sha512-q+HqJpSkvVqOo75HUY5h1JurDXxHMvjPi5INOfZr3QiSlYUPBzRs6JZx8VPWf7pf18yg6NHUWvwfUILGxJ8ekg==" 1869 | }, 1870 | "normalize-path": { 1871 | "version": "3.0.0", 1872 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1873 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1874 | "dev": true 1875 | }, 1876 | "object-assign": { 1877 | "version": "4.1.1", 1878 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1879 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 1880 | }, 1881 | "object-keys": { 1882 | "version": "1.1.1", 1883 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1884 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 1885 | }, 1886 | "omggif": { 1887 | "version": "1.0.10", 1888 | "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", 1889 | "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" 1890 | }, 1891 | "once": { 1892 | "version": "1.4.0", 1893 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1894 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1895 | "dev": true, 1896 | "requires": { 1897 | "wrappy": "1" 1898 | } 1899 | }, 1900 | "p-limit": { 1901 | "version": "3.1.0", 1902 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1903 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1904 | "dev": true, 1905 | "requires": { 1906 | "yocto-queue": "^0.1.0" 1907 | } 1908 | }, 1909 | "p-locate": { 1910 | "version": "5.0.0", 1911 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1912 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1913 | "dev": true, 1914 | "requires": { 1915 | "p-limit": "^3.0.2" 1916 | } 1917 | }, 1918 | "pako": { 1919 | "version": "1.0.11", 1920 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 1921 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" 1922 | }, 1923 | "path-exists": { 1924 | "version": "4.0.0", 1925 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1926 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1927 | "dev": true 1928 | }, 1929 | "picomatch": { 1930 | "version": "2.3.1", 1931 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1932 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1933 | "dev": true 1934 | }, 1935 | "pngjs": { 1936 | "version": "3.4.0", 1937 | "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", 1938 | "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" 1939 | }, 1940 | "pxls": { 1941 | "version": "2.3.2", 1942 | "resolved": "https://registry.npmjs.org/pxls/-/pxls-2.3.2.tgz", 1943 | "integrity": "sha512-pQkwgbLqWPcuES5iEmGa10OlCf5xG0blkIF3dg7PpRZShbTYcvAdfFfGL03SMrkaSUaa/V0UpN9HWg40O2AIIw==", 1944 | "requires": { 1945 | "arr-flatten": "^1.1.0", 1946 | "compute-dims": "^1.1.0", 1947 | "flip-pixels": "^1.0.2", 1948 | "is-browser": "^2.1.0", 1949 | "is-buffer": "^2.0.3", 1950 | "to-uint8": "^1.4.1" 1951 | } 1952 | }, 1953 | "quantize": { 1954 | "version": "1.0.2", 1955 | "resolved": "https://registry.npmjs.org/quantize/-/quantize-1.0.2.tgz", 1956 | "integrity": "sha512-25P7wI2UoDbIQsQp50ARkt+5pwPsOq7G/BqvT5xAbapnRoNWMN8/p55H9TXd5MuENiJnm5XICB2H2aDZGwts7w==" 1957 | }, 1958 | "randombytes": { 1959 | "version": "2.1.0", 1960 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1961 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1962 | "dev": true, 1963 | "requires": { 1964 | "safe-buffer": "^5.1.0" 1965 | } 1966 | }, 1967 | "readdirp": { 1968 | "version": "3.6.0", 1969 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1970 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1971 | "dev": true, 1972 | "requires": { 1973 | "picomatch": "^2.2.1" 1974 | } 1975 | }, 1976 | "regex-regex": { 1977 | "version": "1.0.0", 1978 | "resolved": "https://registry.npmjs.org/regex-regex/-/regex-regex-1.0.0.tgz", 1979 | "integrity": "sha512-FPbEhFTLpxKNgHKay3zMfkHzFK2ebViAlyvsz5euO4kwekH0T6fAL4Sdo2CgQ7Y1tGB5HqQm8SBq7pW5GegvVA==" 1980 | }, 1981 | "require-directory": { 1982 | "version": "2.1.1", 1983 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1984 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 1985 | "dev": true 1986 | }, 1987 | "safe-buffer": { 1988 | "version": "5.2.1", 1989 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1990 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1991 | "dev": true 1992 | }, 1993 | "serialize-javascript": { 1994 | "version": "6.0.2", 1995 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 1996 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 1997 | "dev": true, 1998 | "requires": { 1999 | "randombytes": "^2.1.0" 2000 | } 2001 | }, 2002 | "string-to-arraybuffer": { 2003 | "version": "1.0.2", 2004 | "resolved": "https://registry.npmjs.org/string-to-arraybuffer/-/string-to-arraybuffer-1.0.2.tgz", 2005 | "integrity": "sha512-DaGZidzi93dwjQen5I2osxR9ERS/R7B1PFyufNMnzhj+fmlDQAc1DSDIJVJhgI8Oq221efIMbABUBdPHDRt43Q==", 2006 | "requires": { 2007 | "atob-lite": "^2.0.0", 2008 | "is-base64": "^0.1.0" 2009 | } 2010 | }, 2011 | "string-width": { 2012 | "version": "4.2.3", 2013 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2014 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2015 | "dev": true, 2016 | "requires": { 2017 | "emoji-regex": "^8.0.0", 2018 | "is-fullwidth-code-point": "^3.0.0", 2019 | "strip-ansi": "^6.0.1" 2020 | } 2021 | }, 2022 | "strip-ansi": { 2023 | "version": "6.0.1", 2024 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2025 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2026 | "dev": true, 2027 | "requires": { 2028 | "ansi-regex": "^5.0.1" 2029 | } 2030 | }, 2031 | "strip-json-comments": { 2032 | "version": "3.1.1", 2033 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2034 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2035 | "dev": true 2036 | }, 2037 | "supports-color": { 2038 | "version": "8.1.1", 2039 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 2040 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 2041 | "dev": true, 2042 | "requires": { 2043 | "has-flag": "^4.0.0" 2044 | } 2045 | }, 2046 | "to-array-buffer": { 2047 | "version": "3.2.0", 2048 | "resolved": "https://registry.npmjs.org/to-array-buffer/-/to-array-buffer-3.2.0.tgz", 2049 | "integrity": "sha512-zN33mwi0gpL+7xW1ITLfJ48CEj6ZQW0ZAP0MU+2W3kEY0PAIncyuxmD4OqkUVhPAbTP7amq9j/iwvZKYS+lzSQ==", 2050 | "requires": { 2051 | "flatten-vertex-data": "^1.0.2", 2052 | "is-blob": "^2.0.1", 2053 | "string-to-arraybuffer": "^1.0.0" 2054 | } 2055 | }, 2056 | "to-regex-range": { 2057 | "version": "5.0.1", 2058 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2059 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2060 | "dev": true, 2061 | "requires": { 2062 | "is-number": "^7.0.0" 2063 | } 2064 | }, 2065 | "to-uint8": { 2066 | "version": "1.4.1", 2067 | "resolved": "https://registry.npmjs.org/to-uint8/-/to-uint8-1.4.1.tgz", 2068 | "integrity": "sha512-o+ochsMlTZyucbww8It401FC2Rx+OP2RpDeYbA6h+y9HgedDl1UjdsJ9CmzKEG7AFP9es5PmJ4eDWeeeXihESg==", 2069 | "requires": { 2070 | "arr-flatten": "^1.1.0", 2071 | "clamp": "^1.0.1", 2072 | "is-base64": "^0.1.0", 2073 | "is-float-array": "^1.0.0", 2074 | "to-array-buffer": "^3.0.0" 2075 | } 2076 | }, 2077 | "type-name": { 2078 | "version": "2.0.2", 2079 | "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", 2080 | "integrity": "sha512-kkgkuqR/jKdKO5oh/I2SMu2dGbLXoJq0zkdgbxaqYK+hr9S9edwVVGf+tMUFTx2gH9TN2+Zu9JZ/Njonb3cjhA==" 2081 | }, 2082 | "utif": { 2083 | "version": "2.0.1", 2084 | "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", 2085 | "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", 2086 | "requires": { 2087 | "pako": "^1.0.5" 2088 | } 2089 | }, 2090 | "utils-copy": { 2091 | "version": "1.1.1", 2092 | "resolved": "https://registry.npmjs.org/utils-copy/-/utils-copy-1.1.1.tgz", 2093 | "integrity": "sha512-+NhJVV+PcxjdpkMrVTqXhQHPldlFGca5XR9YnGyNn7kQ0fMi+DqNLzdnhJ4TJ1HNy/HzB7c+FPg3y+4icY99ZA==", 2094 | "requires": { 2095 | "const-pinf-float64": "^1.0.0", 2096 | "object-keys": "^1.0.9", 2097 | "type-name": "^2.0.0", 2098 | "utils-copy-error": "^1.0.0", 2099 | "utils-indexof": "^1.0.0", 2100 | "utils-regex-from-string": "^1.0.0", 2101 | "validate.io-array": "^1.0.3", 2102 | "validate.io-buffer": "^1.0.1", 2103 | "validate.io-nonnegative-integer": "^1.0.0" 2104 | } 2105 | }, 2106 | "utils-copy-error": { 2107 | "version": "1.0.1", 2108 | "resolved": "https://registry.npmjs.org/utils-copy-error/-/utils-copy-error-1.0.1.tgz", 2109 | "integrity": "sha512-RbJcGPZ6Ru2HQk9SWkvbdWNPX58pt4MO5uXsOQRu4LEGWB3LglkRrmnE/Ph1qWg6ywQ0qj95wTz1OeqQ2l8DCA==", 2110 | "requires": { 2111 | "object-keys": "^1.0.9", 2112 | "utils-copy": "^1.1.0" 2113 | } 2114 | }, 2115 | "utils-indexof": { 2116 | "version": "1.0.0", 2117 | "resolved": "https://registry.npmjs.org/utils-indexof/-/utils-indexof-1.0.0.tgz", 2118 | "integrity": "sha512-76QBfRJpn4A0P5uTO1x00x+Yog36w2Pab0n+aT9UfUvVa4l+e8k3p7YwNpDvfQ6+aKGZdxZpxcNotNS4YjFcyg==", 2119 | "requires": { 2120 | "validate.io-array-like": "^1.0.1", 2121 | "validate.io-integer-primitive": "^1.0.0" 2122 | } 2123 | }, 2124 | "utils-regex-from-string": { 2125 | "version": "1.0.0", 2126 | "resolved": "https://registry.npmjs.org/utils-regex-from-string/-/utils-regex-from-string-1.0.0.tgz", 2127 | "integrity": "sha512-xKfdmEF19iUu9TKxFiohQUlQTuqYdV80/CxHiudVI37iEV/OA4HHlXZoc4qvuO1B74EcBVpErBreRO/dpdLeYA==", 2128 | "requires": { 2129 | "regex-regex": "^1.0.0", 2130 | "validate.io-string-primitive": "^1.0.0" 2131 | } 2132 | }, 2133 | "validate.io-array": { 2134 | "version": "1.0.6", 2135 | "resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz", 2136 | "integrity": "sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==" 2137 | }, 2138 | "validate.io-array-like": { 2139 | "version": "1.0.2", 2140 | "resolved": "https://registry.npmjs.org/validate.io-array-like/-/validate.io-array-like-1.0.2.tgz", 2141 | "integrity": "sha512-rGLiN0cvY9OWzQcWP+RtqZR/MK9RUz3gKDTCcRLtEQ/BvlanMF5PyqtVIN+CgrIBCv/ypfme9v7r4yMJPYpbNA==", 2142 | "requires": { 2143 | "const-max-uint32": "^1.0.2", 2144 | "validate.io-integer-primitive": "^1.0.0" 2145 | } 2146 | }, 2147 | "validate.io-buffer": { 2148 | "version": "1.0.2", 2149 | "resolved": "https://registry.npmjs.org/validate.io-buffer/-/validate.io-buffer-1.0.2.tgz", 2150 | "integrity": "sha512-6Tad+/QYOxWEXsesKYak1mHOzGdPYS4QeHFImWn7ECi4GR0x3vh7+6+1yoLKNXiklKuTFOxHLG3kZy9tPX0GvQ==" 2151 | }, 2152 | "validate.io-integer": { 2153 | "version": "1.0.5", 2154 | "resolved": "https://registry.npmjs.org/validate.io-integer/-/validate.io-integer-1.0.5.tgz", 2155 | "integrity": "sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==", 2156 | "requires": { 2157 | "validate.io-number": "^1.0.3" 2158 | } 2159 | }, 2160 | "validate.io-integer-primitive": { 2161 | "version": "1.0.0", 2162 | "resolved": "https://registry.npmjs.org/validate.io-integer-primitive/-/validate.io-integer-primitive-1.0.0.tgz", 2163 | "integrity": "sha512-4ARGKA4FImVWJgrgttLYsYJmDGwxlhLfDCdq09gyVgohLKKRUfD3VAo1L2vTRCLt6hDhDtFKdZiuYUTWyBggwg==", 2164 | "requires": { 2165 | "validate.io-number-primitive": "^1.0.0" 2166 | } 2167 | }, 2168 | "validate.io-matrix-like": { 2169 | "version": "1.0.2", 2170 | "resolved": "https://registry.npmjs.org/validate.io-matrix-like/-/validate.io-matrix-like-1.0.2.tgz", 2171 | "integrity": "sha512-86mqLUIkZCRAOVKZvpCB7sDCw1dKBjBkY+C6WO/wLo/jQx0sOqQZz3LLtDw0DCfuAKxRuhSmIpX3nzr0nWrbdw==" 2172 | }, 2173 | "validate.io-ndarray-like": { 2174 | "version": "1.0.0", 2175 | "resolved": "https://registry.npmjs.org/validate.io-ndarray-like/-/validate.io-ndarray-like-1.0.0.tgz", 2176 | "integrity": "sha512-OV85AosxraPFSXJwzv/d7Cu5/dLiyLtsHmxtHTJcHW1N0uscd0eJ2df1Zk+HdID0eUctUllW/1YuQPUJFv1pTA==" 2177 | }, 2178 | "validate.io-nonnegative-integer": { 2179 | "version": "1.0.0", 2180 | "resolved": "https://registry.npmjs.org/validate.io-nonnegative-integer/-/validate.io-nonnegative-integer-1.0.0.tgz", 2181 | "integrity": "sha512-uOMekPwcl84yg8NR7zgIZCZ9pHCtd9CK1Ri51N+ZJLTe1HyLbmdFdy7ZmfkiHkMvB1pOxeQmd1/LBjKhUD1L3A==", 2182 | "requires": { 2183 | "validate.io-integer": "^1.0.5" 2184 | } 2185 | }, 2186 | "validate.io-number": { 2187 | "version": "1.0.3", 2188 | "resolved": "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz", 2189 | "integrity": "sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==" 2190 | }, 2191 | "validate.io-number-primitive": { 2192 | "version": "1.0.0", 2193 | "resolved": "https://registry.npmjs.org/validate.io-number-primitive/-/validate.io-number-primitive-1.0.0.tgz", 2194 | "integrity": "sha512-8rlCe7N0TRTd50dwk4WNoMXNbX/4+RdtqE3TO6Bk0GJvAgbQlfL5DGr/Pl9ZLbWR6CutMjE2cu+yOoCnFWk+Qw==" 2195 | }, 2196 | "validate.io-positive-integer": { 2197 | "version": "1.0.0", 2198 | "resolved": "https://registry.npmjs.org/validate.io-positive-integer/-/validate.io-positive-integer-1.0.0.tgz", 2199 | "integrity": "sha512-eg4LSdyqjICNUZWRilcQ5l+YayRlu6yi+GQsWw1bCmtG9yayOPmLa1fPymEHPPhbvWPAv3w0LLbCsf03pBHZkg==", 2200 | "requires": { 2201 | "validate.io-integer": "^1.0.5" 2202 | } 2203 | }, 2204 | "validate.io-string-primitive": { 2205 | "version": "1.0.1", 2206 | "resolved": "https://registry.npmjs.org/validate.io-string-primitive/-/validate.io-string-primitive-1.0.1.tgz", 2207 | "integrity": "sha512-TORbkLMdOFkEbPtfdx76FSVQGSAzyUEMxI+pBq5pfFm1ZzIesP+XiGc6eIK75aKu7RA7a8EcqUv5OrY5wfog5w==" 2208 | }, 2209 | "workerpool": { 2210 | "version": "6.5.1", 2211 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", 2212 | "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", 2213 | "dev": true 2214 | }, 2215 | "wrap-ansi": { 2216 | "version": "7.0.0", 2217 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2218 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2219 | "dev": true, 2220 | "requires": { 2221 | "ansi-styles": "^4.0.0", 2222 | "string-width": "^4.1.0", 2223 | "strip-ansi": "^6.0.0" 2224 | } 2225 | }, 2226 | "wrappy": { 2227 | "version": "1.0.2", 2228 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2229 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2230 | "dev": true 2231 | }, 2232 | "y18n": { 2233 | "version": "5.0.8", 2234 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2235 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 2236 | "dev": true 2237 | }, 2238 | "yargs": { 2239 | "version": "16.2.0", 2240 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 2241 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 2242 | "dev": true, 2243 | "requires": { 2244 | "cliui": "^7.0.2", 2245 | "escalade": "^3.1.1", 2246 | "get-caller-file": "^2.0.5", 2247 | "require-directory": "^2.1.1", 2248 | "string-width": "^4.2.0", 2249 | "y18n": "^5.0.5", 2250 | "yargs-parser": "^20.2.2" 2251 | } 2252 | }, 2253 | "yargs-parser": { 2254 | "version": "20.2.9", 2255 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 2256 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 2257 | "dev": true 2258 | }, 2259 | "yargs-unparser": { 2260 | "version": "2.0.0", 2261 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 2262 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 2263 | "dev": true, 2264 | "requires": { 2265 | "camelcase": "^6.0.0", 2266 | "decamelize": "^4.0.0", 2267 | "flat": "^5.0.2", 2268 | "is-plain-obj": "^2.1.0" 2269 | }, 2270 | "dependencies": { 2271 | "is-plain-obj": { 2272 | "version": "2.1.0", 2273 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 2274 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 2275 | "dev": true 2276 | } 2277 | } 2278 | }, 2279 | "yocto-queue": { 2280 | "version": "0.1.0", 2281 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2282 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2283 | "dev": true 2284 | } 2285 | } 2286 | } 2287 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "image-hide", 3 | "version": "1.0.3", 4 | "description": "Put a secret image into another image using alpha channel magic.", 5 | "main": "index.mjs", 6 | "scripts": { 7 | "test": "mocha" 8 | }, 9 | "author": "Coxxs", 10 | "license": "MIT", 11 | "dependencies": { 12 | "image-decode": "^1.2.2", 13 | "image-encode": "^1.3.1", 14 | "jpeg-js": ">=0.4.4" 15 | }, 16 | "devDependencies": { 17 | "mocha": "^10.0.0" 18 | }, 19 | "overrides": { 20 | "image-decode": { 21 | "jpeg-js": "$jpeg-js" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Coxxs/image-hide/7e022c3de440ac7ab926357aeb21abea5c293e5d/test/a.png -------------------------------------------------------------------------------- /test/b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Coxxs/image-hide/7e022c3de440ac7ab926357aeb21abea5c293e5d/test/b.png -------------------------------------------------------------------------------- /test/result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Coxxs/image-hide/7e022c3de440ac7ab926357aeb21abea5c293e5d/test/result.png -------------------------------------------------------------------------------- /test/test.mjs: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | import assert from 'assert' 3 | import hide from '../index.mjs' 4 | import decode from 'image-decode' 5 | 6 | describe('image-hide', function() { 7 | it('should merge image', function() { 8 | let image_a = fs.readFileSync('./test/a.png') 9 | let image_b = fs.readFileSync('./test/b.png') 10 | 11 | let actual = hide(image_a, image_b) 12 | let expected = fs.readFileSync('./test/result.png') 13 | assert.deepStrictEqual(decode(actual), decode(expected)) 14 | }) 15 | }) --------------------------------------------------------------------------------