From d77cb7826a2d06037f04711cfcab122a752d7f7d Mon Sep 17 00:00:00 2001 From: dyte Date: Thu, 8 Aug 2019 12:31:59 +0200 Subject: [PATCH] Standard operation of subImageMatch + extended tests --- README.md | 43 +- package-lock.json | 1169 ------------------------------------ package.json | 70 ++- src/delta.js | 9 +- src/index.js | 24 +- test/test.js | 94 +-- test/testimages/1b.png | Bin 0 -> 1882 bytes test/testimages/1c.png | Bin 0 -> 1874 bytes test/testimages/1d.png | Bin 0 -> 1888 bytes test/testimages/3-sub.png | Bin 0 -> 9420 bytes test/testimages/3.png | Bin 0 -> 80188 bytes test/testimages/3b-var.png | Bin 0 -> 9510 bytes test/testimages/3b.png | Bin 0 -> 9490 bytes 13 files changed, 141 insertions(+), 1268 deletions(-) delete mode 100644 package-lock.json create mode 100644 test/testimages/1b.png create mode 100644 test/testimages/1c.png create mode 100644 test/testimages/1d.png create mode 100644 test/testimages/3-sub.png create mode 100644 test/testimages/3.png create mode 100644 test/testimages/3b-var.png create mode 100644 test/testimages/3b.png diff --git a/README.md b/README.md index 878e4ae..77aee62 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,43 @@ # matches-subimage -Lightweight library that finds matches of an image within another image + +Lightweight library that finds matches of an image within another image, perfect for visual validation in testing scenarios. +Heavily inspired by (read: blatantly copied some subroutines from) [pixelmatch](https://github.com/mapbox/pixelmatch), and just like [pixelmatch](https://github.com/mapbox/pixelmatch), its advantages are that it's fast and lightweight, with zero dependencies. + +Usage demo: +```js +const foundMatch = subImageMatch(img, subImg); +``` + +## API + +### pixelmatch(img, subImg[, options]) + +- `img1`, `img2` — Image data of the images to compare (`Buffer`, `Uint8Array` or `Uint8ClampedArray`). +- `options` is an object literal with only one property currently: + - `threshold` — Matching threshold, ranges from `0` to `1`. Smaller values make the comparison more sensitive. `0.1` by default. + +Returns a boolean indicating whether or not a match has been found + +## Example usage + +### Node.js + +```js +const fs = require("fs"); +const PNG = require("pngjs").PNG; +const subImageMatch = require("subimage-match"); + +const img = PNG.sync.read(fs.readFileSync("image.png")); +const subImg = PNG.sync.read(fs.readFileSync("sub_image.png")); +subImageMatch(img1.data, img2.data, {threshold: 0.1}); +``` + +## Install + +Install with NPM: + +```bash +npm install pixelmatch +``` + +## [Changelog](https://github.com/dieterwalckiers/subimage-match/releases) diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 7b7a871..0000000 --- a/package-lock.json +++ /dev/null @@ -1,1169 +0,0 @@ -{ - "name": "matches-subimage", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "http://npm.dev.binders.media/@babel%2fcode-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/highlight": { - "version": "7.5.0", - "resolved": "http://npm.dev.binders.media/@babel%2fhighlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "acorn": { - "version": "6.2.1", - "resolved": "http://npm.dev.binders.media/acorn/-/acorn-6.2.1.tgz", - "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==", - "dev": true - }, - "acorn-jsx": { - "version": "5.0.1", - "resolved": "http://npm.dev.binders.media/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", - "dev": true - }, - "ajv": { - "version": "6.10.2", - "resolved": "http://npm.dev.binders.media/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "http://npm.dev.binders.media/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "http://npm.dev.binders.media/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "http://npm.dev.binders.media/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "http://npm.dev.binders.media/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "http://npm.dev.binders.media/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "http://npm.dev.binders.media/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "http://npm.dev.binders.media/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "http://npm.dev.binders.media/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "http://npm.dev.binders.media/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "http://npm.dev.binders.media/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "http://npm.dev.binders.media/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "http://npm.dev.binders.media/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "http://npm.dev.binders.media/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "http://npm.dev.binders.media/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "http://npm.dev.binders.media/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "http://npm.dev.binders.media/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.0", - "resolved": "http://npm.dev.binders.media/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - } - } - }, - "debug": { - "version": "4.1.1", - "resolved": "http://npm.dev.binders.media/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "http://npm.dev.binders.media/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "http://npm.dev.binders.media/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "http://npm.dev.binders.media/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "defined": { - "version": "1.0.0", - "resolved": "http://npm.dev.binders.media/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "http://npm.dev.binders.media/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "http://npm.dev.binders.media/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "es-abstract": { - "version": "1.13.0", - "resolved": "http://npm.dev.binders.media/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "http://npm.dev.binders.media/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "http://npm.dev.binders.media/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint": { - "version": "6.1.0", - "resolved": "http://npm.dev.binders.media/eslint/-/eslint-6.1.0.tgz", - "integrity": "sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^6.0.0", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^6.4.1", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-scope": { - "version": "5.0.0", - "resolved": "http://npm.dev.binders.media/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.4.0", - "resolved": "http://npm.dev.binders.media/eslint-utils/-/eslint-utils-1.4.0.tgz", - "integrity": "sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.0.0" - } - }, - "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "http://npm.dev.binders.media/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true - }, - "espree": { - "version": "6.0.0", - "resolved": "http://npm.dev.binders.media/espree/-/espree-6.0.0.tgz", - "integrity": "sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==", - "dev": true, - "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "http://npm.dev.binders.media/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.0.1", - "resolved": "http://npm.dev.binders.media/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, - "requires": { - "estraverse": "^4.0.0" - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "http://npm.dev.binders.media/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "http://npm.dev.binders.media/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "http://npm.dev.binders.media/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "external-editor": { - "version": "3.1.0", - "resolved": "http://npm.dev.binders.media/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "http://npm.dev.binders.media/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "http://npm.dev.binders.media/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "http://npm.dev.binders.media/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "http://npm.dev.binders.media/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "http://npm.dev.binders.media/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "http://npm.dev.binders.media/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.1", - "resolved": "http://npm.dev.binders.media/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", - "dev": true - }, - "for-each": { - "version": "0.3.3", - "resolved": "http://npm.dev.binders.media/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "http://npm.dev.binders.media/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "http://npm.dev.binders.media/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "http://npm.dev.binders.media/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "glob": { - "version": "7.1.4", - "resolved": "http://npm.dev.binders.media/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.0.0", - "resolved": "http://npm.dev.binders.media/glob-parent/-/glob-parent-5.0.0.tgz", - "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "http://npm.dev.binders.media/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "http://npm.dev.binders.media/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "http://npm.dev.binders.media/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "http://npm.dev.binders.media/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "http://npm.dev.binders.media/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "http://npm.dev.binders.media/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.1.0", - "resolved": "http://npm.dev.binders.media/import-fresh/-/import-fresh-3.1.0.tgz", - "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "http://npm.dev.binders.media/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "http://npm.dev.binders.media/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "http://npm.dev.binders.media/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "inquirer": { - "version": "6.5.0", - "resolved": "http://npm.dev.binders.media/inquirer/-/inquirer-6.5.0.tgz", - "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - } - }, - "is-callable": { - "version": "1.1.4", - "resolved": "http://npm.dev.binders.media/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "http://npm.dev.binders.media/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "http://npm.dev.binders.media/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "http://npm.dev.binders.media/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "http://npm.dev.binders.media/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-promise": { - "version": "2.1.0", - "resolved": "http://npm.dev.binders.media/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "http://npm.dev.binders.media/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "http://npm.dev.binders.media/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "http://npm.dev.binders.media/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "http://npm.dev.binders.media/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "http://npm.dev.binders.media/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "http://npm.dev.binders.media/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "http://npm.dev.binders.media/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "http://npm.dev.binders.media/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "http://npm.dev.binders.media/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "http://npm.dev.binders.media/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "http://npm.dev.binders.media/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "http://npm.dev.binders.media/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "http://npm.dev.binders.media/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "http://npm.dev.binders.media/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "http://npm.dev.binders.media/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "http://npm.dev.binders.media/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "http://npm.dev.binders.media/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "http://npm.dev.binders.media/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "object-inspect": { - "version": "1.6.0", - "resolved": "http://npm.dev.binders.media/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "http://npm.dev.binders.media/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "http://npm.dev.binders.media/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "http://npm.dev.binders.media/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "http://npm.dev.binders.media/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "http://npm.dev.binders.media/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "http://npm.dev.binders.media/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "http://npm.dev.binders.media/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "http://npm.dev.binders.media/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "http://npm.dev.binders.media/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "pngjs": { - "version": "3.4.0", - "resolved": "http://npm.dev.binders.media/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "http://npm.dev.binders.media/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "http://npm.dev.binders.media/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "http://npm.dev.binders.media/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "regexpp": { - "version": "2.0.1", - "resolved": "http://npm.dev.binders.media/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "resolve": { - "version": "1.11.1", - "resolved": "http://npm.dev.binders.media/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "http://npm.dev.binders.media/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "http://npm.dev.binders.media/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "resumer": { - "version": "0.0.0", - "resolved": "http://npm.dev.binders.media/resumer/-/resumer-0.0.0.tgz", - "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", - "dev": true, - "requires": { - "through": "~2.3.4" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "http://npm.dev.binders.media/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.3.0", - "resolved": "http://npm.dev.binders.media/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "rxjs": { - "version": "6.5.2", - "resolved": "http://npm.dev.binders.media/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "http://npm.dev.binders.media/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "http://npm.dev.binders.media/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "http://npm.dev.binders.media/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "http://npm.dev.binders.media/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "http://npm.dev.binders.media/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "http://npm.dev.binders.media/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "http://npm.dev.binders.media/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "http://npm.dev.binders.media/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "http://npm.dev.binders.media/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string.prototype.trim": { - "version": "1.1.2", - "resolved": "http://npm.dev.binders.media/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", - "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.0", - "function-bind": "^1.0.2" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "http://npm.dev.binders.media/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "http://npm.dev.binders.media/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - } - } - }, - "strip-json-comments": { - "version": "3.0.1", - "resolved": "http://npm.dev.binders.media/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "http://npm.dev.binders.media/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "table": { - "version": "5.4.5", - "resolved": "http://npm.dev.binders.media/table/-/table-5.4.5.tgz", - "integrity": "sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "string-width": { - "version": "3.1.0", - "resolved": "http://npm.dev.binders.media/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "tape": { - "version": "4.11.0", - "resolved": "http://npm.dev.binders.media/tape/-/tape-4.11.0.tgz", - "integrity": "sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA==", - "dev": true, - "requires": { - "deep-equal": "~1.0.1", - "defined": "~1.0.0", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.4", - "has": "~1.0.3", - "inherits": "~2.0.4", - "minimist": "~1.2.0", - "object-inspect": "~1.6.0", - "resolve": "~1.11.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.1.2", - "through": "~2.3.8" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "http://npm.dev.binders.media/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "http://npm.dev.binders.media/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "http://npm.dev.binders.media/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tslib": { - "version": "1.10.0", - "resolved": "http://npm.dev.binders.media/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "http://npm.dev.binders.media/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "http://npm.dev.binders.media/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "v8-compile-cache": { - "version": "2.1.0", - "resolved": "http://npm.dev.binders.media/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "http://npm.dev.binders.media/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "http://npm.dev.binders.media/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "http://npm.dev.binders.media/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "1.0.3", - "resolved": "http://npm.dev.binders.media/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - } - } -} diff --git a/package.json b/package.json index e5b10fb..e2d6303 100644 --- a/package.json +++ b/package.json @@ -1,38 +1,36 @@ { - "name": "matches-subimage", - "version": "1.0.0", - "description": "Lightweight library that finds matches of an image within another image", - "main": "index.js", - "scripts": { - "lint": "eslint", - "test": "node test/test.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/dieterwalckiers/matches-subimage.git" - }, - "keywords": [ - "image", - "pixels", - "comparison", - "match", - "matches", - "subimage", - "within", - "image", - "inside" - ], - "author": "Dieter Walckiers", - "license": "MIT", - "bugs": { - "url": "https://github.com/dieterwalckiers/matches-subimage/issues" - }, - "homepage": "https://github.com/dieterwalckiers/matches-subimage#readme", - "dependencies": { - "pngjs": "^3.4.0" - }, - "devDependencies": { - "eslint": "^6.1.0", - "tape": "^4.11.0" - } + "name": "matches-subimage", + "version": "1.0.0", + "description": "Lightweight library that finds matches of an image within another image", + "main": "index.js", + "scripts": { + "lint": "eslint", + "test": "node test/test.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/dieterwalckiers/matches-subimage.git" + }, + "keywords": [ + "image", + "pixels", + "comparison", + "match", + "matches", + "subimage", + "within", + "image", + "inside" + ], + "author": "Dieter Walckiers", + "license": "MIT", + "bugs": { + "url": "https://github.com/dieterwalckiers/matches-subimage/issues" + }, + "homepage": "https://github.com/dieterwalckiers/matches-subimage#readme", + "devDependencies": { + "pngjs": "^3.4.0", + "eslint": "^6.1.0", + "tape": "^4.11.0" + } } diff --git a/src/delta.js b/src/delta.js index 665cb2b..383f79d 100644 --- a/src/delta.js +++ b/src/delta.js @@ -2,15 +2,13 @@ module.exports = pixelMatches; // calculate color difference according to the paper "Measuring perceived color difference // using YIQ NTSC transmission color space in mobile applications" by Y. Kotsarenko and F. Ramos -function pixelMatches(img1, img2, k, m, maxDelta, yOnly) { +function pixelMatches(img1, img2, k, m, maxDelta, options, yOnly) { if ((k + 3) >= img1.length) { - return false; - // throw new Error(`Cannot get positions ${k} through ${k + 3} from img array of length ${img1.length}`); + throw new Error(`Cannot get positions ${k} through ${k + 3} from img array of length ${img1.length}`); } if ((m + 3) >= img2.length) { - return false; - // throw new Error(`Cannot get positions ${m} through ${m + 3} from img array of length ${img2.length}`); + throw new Error(`Cannot get positions ${m} through ${m + 3} from img array of length ${img2.length}`); } let r1 = img1[k + 0]; @@ -50,7 +48,6 @@ function pixelMatches(img1, img2, k, m, maxDelta, yOnly) { const q = rgb2q(r1, g1, b1) - rgb2q(r2, g2, b2); delta = 0.5053 * y * y + 0.299 * i * i + 0.1957 * q * q; } - // console.log(`d:${delta}, compared to maxDelta (${maxDelta}) getting a ${delta <= maxDelta ? "match" :"non-match"}`); return delta <= maxDelta; } diff --git a/src/index.js b/src/index.js index e057e83..83dfef7 100644 --- a/src/index.js +++ b/src/index.js @@ -1,19 +1,15 @@ const pixelMatches = require("./delta"); -module.exports = subImageFoundInImage; +module.exports = subImageMatch; const defaultOptions = { threshold: 0.1, // matching threshold (0 to 1); smaller is more sensitive // includeAA: false, // whether to skip anti-aliasing detection. WIP (see pixelmatch package) }; -function subImageFoundInImage(img, subImg, optionsParam) { +function subImageMatch(img, subImg, optionsParam) { const { data: imgData, width: imgWidth, height: imgHeight } = img; - const { data: subImgData, width: subImgWidth, height: subImgHeight } = subImg; - - console.log(`img is ${imgWidth} x ${imgHeight}`); - console.log(`subImg is ${subImgWidth} x ${subImgHeight}`); - + const { data: subImgData, width: subImgWidth } = subImg; if (!isPixelData(imgData) || !isPixelData(subImgData)) { throw new Error("Image data: Uint8Array, Uint8ClampedArray or Buffer expected."); @@ -24,8 +20,6 @@ function subImageFoundInImage(img, subImg, optionsParam) { const options = Object.assign({}, defaultOptions, optionsParam); const maxDelta = 35215 * options.threshold * options.threshold; - console.log("max delta", maxDelta); - let subImgPos = 0; let matchingTopRowStartX = 0; let matchingTopRowStartY = 0; @@ -48,10 +42,10 @@ function subImageFoundInImage(img, subImg, optionsParam) { matchingTopRowX++; if (matchingTopRowX === subImgWidth) { - // console.log(`rowmatch on ${matchingTopRowStartY}-${matchingTopRowStartX}, now checking the rows below!`); - if (subImageFoundOnCoordinates(img, subImg, matchingTopRowStartY, matchingTopRowStartX, maxDelta)) { + if (subImageMatchOnCoordinates(img, subImg, matchingTopRowStartY, matchingTopRowStartX, maxDelta)) { return true; } + x = matchingTopRowStartX; // put our search position x back to where the matching row began matchingTopRowX = 0; } } else { @@ -62,30 +56,26 @@ function subImageFoundInImage(img, subImg, optionsParam) { return false; } -function subImageFoundOnCoordinates(img, subImg, matchY, matchX, maxDelta) { +function subImageMatchOnCoordinates(img, subImg, matchY, matchX, maxDelta) { const { data: imgData, width: imgWidth } = img; const { data: subImgData, width: subImgWidth, height: subImgHeight } = subImg; let subImgX = 0; let subImgY = 0; for (let imgY = matchY; imgY < (matchY + subImgHeight); imgY++) { subImgX = 0; - console.log(`checking row ${imgY} (${subImgY} in subImg), from ${matchX} to ${matchX + subImgWidth - 1}`); for (let imgX = matchX; imgX < (matchX + subImgWidth); imgX++) { const imgPos = posFromCoordinates(imgY, imgX, imgWidth); const subImgPos = posFromCoordinates(subImgY, subImgX, subImgWidth); - const matches = pixelMatches(imgData, subImgData, imgPos, subImgPos, maxDelta); + const matches = pixelMatches(imgData, subImgData, imgPos, subImgPos, maxDelta, undefined, imgY === 5); if (!matches) { - console.log(`matches is ${matches}, so nope for coords ${imgY}-${imgX} (${subImgY}-${subImgX} on subImg)`); return false; } subImgX++; } - subImgY >= 0 && console.log(`row ${subImgY} matches`); subImgY++; } - console.log(`complete match on ${matchY}-${matchX}`); return true; } diff --git a/test/test.js b/test/test.js index 0420c92..5d00691 100644 --- a/test/test.js +++ b/test/test.js @@ -2,57 +2,73 @@ const test = require("tape"); const pngjs = require("pngjs"); const path = require("path"); const fs = require("fs"); -const subImageFoundInImage = require("../src"); +const subImageMatch = require("../src"); // eslint-disable-next-line no-undef const getTestImgPath = (filename) => path.join(__dirname, `testimages/${filename}.png`); -// test("throws error if provided wrong image data format", (t) => { -// const err = "Image data: Uint8Array, Uint8ClampedArray or Buffer expected"; -// const arr = new Uint8Array(4 * 20 * 20); -// const bad = new Array(arr.length).fill(0); -// t.throws(() => subImageFoundInImage(bad, arr), err); -// t.throws(() => subImageFoundInImage(arr, bad), err); -// t.end(); -// }); - - -// test("throws error sub image is larger than base image", (t) => { -// const err = "Subimage is larger than base image"; -// const smallArr = new Uint8Array(4 * 10 * 10); -// const largeArr = new Uint8Array(4 * 20 * 20); -// t.throws(() => subImageFoundInImage(smallArr, largeArr), err); -// t.end(); -// }); - -// test("Matches on 2 identical images", (t) => { -// const img1 = readImage(getTestImgPath("1")); -// const img2 = readImage(getTestImgPath("1")); -// const matches = subImageFoundInImage(img1, img2); -// t.ok(matches, "should find match"); -// t.end(); -// }); - -// test("Doesn't match on 2 different images", (t) => { -// const img1 = readImage(getTestImgPath("1-sub")); -// const img2 = readImage(getTestImgPath("2")); -// const matches = subImageFoundInImage(img1, img2); -// t.notOk(matches, "shouldn't find match"); -// t.end(); -// }); +test("throws error if provided wrong image data format", (t) => { + const err = "Image data: Uint8Array, Uint8ClampedArray or Buffer expected"; + const arr = new Uint8Array(4 * 20 * 20); + const bad = new Array(arr.length).fill(0); + t.throws(() => subImageMatch(bad, arr), err); + t.throws(() => subImageMatch(arr, bad), err); + t.end(); +}); + + +test("throws error sub image is larger than base image", (t) => { + const err = "Subimage is larger than base image"; + const smallArr = new Uint8Array(4 * 10 * 10); + const largeArr = new Uint8Array(4 * 20 * 20); + t.throws(() => subImageMatch(smallArr, largeArr), err); + t.end(); +}); + +test("Matches on 2 identical images", (t) => { + const img1 = readImage(getTestImgPath("1")); + const img2 = readImage(getTestImgPath("1")); + const matches = subImageMatch(img1, img2); + t.ok(matches, "should find match"); + t.end(); +}); + +test("Doesn't match on 2 different images", (t) => { + const img1 = readImage(getTestImgPath("1-sub")); + const img2 = readImage(getTestImgPath("2")); + const matches = subImageMatch(img1, img2); + t.notOk(matches, "shouldn't find match"); + t.end(); +}); test("Find sub-image match within image", (t) => { const img = readImage(getTestImgPath("1")); const subImg = readImage(getTestImgPath("1-sub")); - const matches = subImageFoundInImage(img, subImg); + const matches = subImageMatch(img, subImg); + t.ok(matches, "should find match"); + t.end(); +}); + +test("Find sub-image match within image when first row matches in multiple places", (t) => { + const img = readImage(getTestImgPath("1b")); + const subImg = readImage(getTestImgPath("1-sub")); + const matches = subImageMatch(img, subImg); t.ok(matches, "should find match"); t.end(); }); -test("Find sub-image match within image (larger imgs)", (t) => { - const img = readImage(getTestImgPath("3b")); - const subImg = readImage(getTestImgPath("3-sub")); - const matches = subImageFoundInImage(img, subImg); +test("Find sub-image match within image when first row matches in multiple places 2", (t) => { + const img = readImage(getTestImgPath("1c")); + const subImg = readImage(getTestImgPath("1-sub")); + const matches = subImageMatch(img, subImg); + t.ok(matches, "should find match"); + t.end(); +}); + +test("Find sub-image match within image when first row matches in multiple places 3", (t) => { + const img = readImage(getTestImgPath("1d")); + const subImg = readImage(getTestImgPath("1-sub")); + const matches = subImageMatch(img, subImg); t.ok(matches, "should find match"); t.end(); }); diff --git a/test/testimages/1b.png b/test/testimages/1b.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1d6175157451304bae75059f3c304e9f553c95 GIT binary patch literal 1882 zcmb_dO>f*p7&Zt&CM^wrIQ8;lx;$Dd>;urAodcR29^h1EPUfVOzyzlcq^UTcU&5d)* zC!RT>D9Unoy|V?+N8o;V=|T9vI6V0*JRU99->4Mjv6IdHfb#JtPXpkaw6|Svhp$jB zGo8gU68bnR0Ieuz&W;PlcSNm5qMzn%?f0**X=)m`wbz{xheaR;>H1+Q&L3{{_~8!s zW9{rq>X|Wx0GX(nI?jf9MaOMz5|_ez(`;z!1XAy`wUs8Jx*cw+fh>jU=q}>K#;WJ* z#KpElPOBy+o`D?$y9g7CTht`#?9w1x87FkB^YSbge6_VfT^H0aMx&8FvUFMY4dVO0 zflb3S5g<@?kk@RC^6Jz)LPu1*Op7{|x!Oczk=(1>8Ze!fkQIxtc{P&>1T)60Fo=$u zk|w~IFL1?PIh-Vqxgmxk6M0<$mMpNvK-RJv$UB5ybl;Q!qz%JGj$^rG*&;<%ukAw_ zGeM3;SG|Km7+a!}dnFfZ`#|$lQ%ymGQm|TFtiQ1e~R)au&K4d)2n-X3)GC*`# zE!rB)nvZY`em#PzWmC(25t|g_DKwOEnjG8?CDih$ZQcY0%fzf^_XNkBCbG;J6r5(P zFN`AZYwAKq8pxq6Au+JCj<$D$V6&7-I)sjD>)fi^T?<^|yDl9G;t&nMm%B8qrFnl&2eXBAUhK}^hN(I+4`sYr6m5++ZV<6HYfg{RJcl&N*}blrwffck+0bP-KjgK>m^YlkZ`OR*}lgR^An7O$sNKx zZZpE>r5{V(rM5kH?Z2TulZ6jh-WRaL8rpv;=6-xRWqErsw=BW`uNb4*Sf>s%ZZ+Se z@5m+$6FF&uoxOQo94YXzIFv*VI+bwbJonY^bvUk8yPcKZ(ntKt?ps{H`r+Hnb>r8c z)ung8{QfuRlF+X{px~*wv*ii zBv5a?!imr$N5lnGA%Wn)AHV?#E?hXk6$x?S1V8V?q;2|8h2_V1=9};L{T?%Ob8GX; z>E)M~8;!>4-bQyDzE8vR)Tt-n{lRGEEPS5HHr^^4jb~S?XQ^>?>m>ku8~1n0o!|}1 zRnlZag|azGGC(&P7cNaQ#&>0@g>n$5ZT*k0ztgo?wDmWg00&t|4&#l(TwXie?DNB2 z?hF0WMeV|b0zo26rcIJjTF^;bpYl>@SKWrLO(ErOTVJgVYCFM})=|0CoTiI7v9ad) zP2ytPA+KpBCZ2&E1G@+lid)nq+WgYNS}r2G-CdvCg1@#tEX#}<#&|q#j;*H32L|zd z-@v9}ng|f6I7mx2L1}Sr!O)cj&*Q9&RjO5tEL3}CTL+~x7m}=|O^bP$AYjIXWd>>D z%B3k#@EVux<)f)_!3{Z*iA>7^u%yOjLshC`sP02u58q(`LK_6NjT5ybNo}Gi*Y?4U zc|cA?7yW}w8r!l^dpVbD`ylgN|1icN~~3>qjAM+f&p3AH@xcy~adWCSbOL&1X6NaYCwhvS3| zq>-fqU8}=LJ8GnIFbwLf}R?*;sSDfFkeX5a7pON_K;@_X{{TV;M^8NekUwyc8^~Txf)<3(w)cEq7Gpo1H{Pucv O>h;z(yPscv`^LXlDoh~& literal 0 HcmV?d00001 diff --git a/test/testimages/1d.png b/test/testimages/1d.png new file mode 100644 index 0000000000000000000000000000000000000000..38c78ce9ef8e71cf8c34d8d0f51e69f614e0f4ba GIT binary patch literal 1888 zcmb_dO>f*p7+ye1L!qY#R5-crg|D$^Y_Gi@)kMi|+FennQMwZ0Qgu8Y?^;=VT-(WR z!U0;~&_4hLaq1BvxPlPvkKllWxKu(Q4sFkz%Ip0iZPO1`SnIVt^UV7^?>o=TT-{hd zbL{BrM{Bj(u}-_S3C|;NFDyO}{~r&QPQc^Eto=bztG%>T-Ots&`uaEkZp7WKa?3wU zxlA+`%0OtNBm;Dy=vA~Weh2|J$0obRJQyLr73fv)HNG%VqwK` zHDY6{PTo-rOdK88b!;O{C~i=LDAP*?wmgjJX6y8n3%)$HUzQow_2F=+4NXnvJ)O9& zt7Ahq30ep|m(Ti_j7U&*Q9&WvWyWSs-^xPX(ou6q0NnHZ7)Qf`aKImgz*p zRZ3%E$mh6hCm)Q-L#~T~NJLr|fF*Nm)|aI$`tlK>=iT=aKxut{&T*)gB$-nb<=QT! zF)hfU=%Txq34K!(awq3vZ5L#otg^{yGZ(Csc~{E8Y@#-1l9gstdBbNsPOB8&JTO4C zSSdUeX3a&o0lzN6)U>E+zl{xw@dWD2Fpl;fh7wvgXr0^#1ba zPRmoFI9eQs)V9LFh@1!!)3T5i2m`s;ZlK5_A#-^^m;prN8KW)9cPa~1<0q>jlpJFG zCy$ts5jYJKVYk7M;GIN0KX2Lc$=J=3$ zJQeeF{ID+|=wn|UV7cIohXO|5_K~~mg_LY+z2CK z@H$}*w-{lw)DM+zQ_GsU_F1G)%fkCC?Franb@kbkc{*QCR6d-{155D#OGd9Y)``RP z2hBI`JFp4EM2?$aXRlu8M+$t*4<(U8opLyGinl)d8;+}Xr?t{u{E~lr=|isl{Q2eT zy7k8|%Hk(iFW*{zVd3KHpV!{|-u&XikypHbti|iUu14tW?T=3X@Y~Y4D<@ulb>W)w f`#1OQy;l3{`qGcLvpb(wXJBV-z4hJd#Vh{;zvokL literal 0 HcmV?d00001 diff --git a/test/testimages/3-sub.png b/test/testimages/3-sub.png new file mode 100644 index 0000000000000000000000000000000000000000..80758078267a4809c7078e02c46ae270663abe2c GIT binary patch literal 9420 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 b2mZN4sz^qeWpQi+fe#fWO~rh9(}4d25r&a? literal 0 HcmV?d00001 diff --git a/test/testimages/3b-var.png b/test/testimages/3b-var.png new file mode 100644 index 0000000000000000000000000000000000000000..0c3e52a7461fde0ac54e5ab987a74e2fac0e66ce GIT binary patch literal 9510 zcmbVy2UJtrwst5=5s@m=1OiA6p(TOPd+z~MnlXeTB@lx2j);hKPh$7OF z-UL*T-a%R@56?OGy!-BdUm1VK*x76E^{sDybFR5&#$G#54D~gxQnFA20D!AnnySVZ zXUmJ@E;;eVcf)WY-NlK*P4kWi0C0u=_dx_m%eVmmT-tU-+{WG3(}kljE+R-<%zdbk zSVuRUBgU2UHzV>s#uFz8yioe53odSd)4F>66{d@TfxVG#U@;NV-!Ax5jCd%+1k~vjWIQjLE zC`Z@dE(rY70JJI+hn53g%$hVvR0<>tMTkM+Vxn*{DIrmDxTxr#P(6&Tqn*#cK&233 zVsLSBxH$B`Krd3p7KuatuV7mg+zx|vL0&lQ=z_FIgWX*1ft-Jb5w3!9#$YcDU#OG# z=lfbJDu!5$oul(bhljC-GN+cB3RFxQ3I&Oai2Wf~PYVZSLqR?8Za=?q=h&Vdh z!tWy`pcgP0NK{lx0wjq>-Ums+Y*8Qx3|jt^2}uY@0u2!Zp`|6IKvH552nc2;Zif^Xm4w+s{$?}4I$kVDr1L+s{#Ips z!6*emOF<<>B|#9$`$&+a1X>D&gh@+-Y$c_UD5#yNovj_}ciR7vNpMX^kBd3>`D-DW zpxys!IXiOxkvwoD>i43M1EPLs1KJk&*KNmt6OaFs<-f*zIiN2{|A#F3)4B)74(El$ zqLu6~V)wshA^5)&?}2>yKTH3=P351O{zdx#o3;Nx(*Ftz$^q$WkG`m|VBl|Oz`twJ zpOXUq*ZKOR@1N?{Kj0U|@OSg?DtvMAcO6H&UQlB%sx)lI&kF#!Ii;nlgz(N-&+ziL z{4{djpJY+v#9Qk7{3np9o<{VO)QzF1%OFKMI`XFZtKo`E5F*`|)LOxY#O*iIX_P54 z!yk}{d`NJ)Q{g*h5uFQ- z`lHnz$5U}1VbZrp=)BI}E!i{`g1pzSSd}c*&wzdXltKW8q=H6Tozl+%3B+{YC~4y3 z&iAhBu-!R-@$;?7$d@V$;(*6l8>9u1-|_9*R)?hECfXX}_mE!mMC4(6Q5c@tCx^}0x2q*tHS z3*@H`ZV7HQeP0FvkU#%#!hn_reFSC zexh);KLX267pwh#tz2$EymG%Vz3l7YwwAN^hp-segch9hIhgFf#ouiv&id=$to=d|Sx=7%6+og<8Pra>|eY)6Y znvo_v#;F~9awiH`QnGxu2tphS&*bsL=-GPzmwYMux>T|U@1so*l5O))!>X!YVI7O} zB1!!=dIG$7gmzwnqUg5+Ekr1ZdK!Ui?DRu-jU8QVtoVhf=@P-GRUn0#1`uQSuE#=Y z(0rPXz({!4^)b@qd9A#_fFZRf7G>mamjLG+N=F)806OAu09Tu&t`=u%e_mf5shH#7 zOpE0mhb#_$r}XN60l%C6lgDM_)3sLTgC5??2~F2I014YFchvxrA3(3L`KSPxRjs6< zt;lJs<6UTDxAU29BPk{D0o)^;x1iLJKh9^FA5lXGGGQgZOz>^EclJafpi~817N2Fz z|Da*1{qggbYM+4+d^y}U<@(wF5echb=Ixt`LI;O}7AqEB=?a8{et8T2^0=-EywUZq zHv?z@MqI=TSZTeX0%J->V(n0f=LpGZn1#Z6pTuWFTgqiUxtiDT52X%Xn+tod9vJHV_Y~A7*ao^mL@`RdsOJFLPA$N$oxO`LR!}p?Q7z! z6rzZJw&0F#PrsJClHolR2NC@y)VTZXT3O(Fb;=djDtmVQR36QTj=Jvj+PQ{q1#SS( za*7)M9kTZP0i5%PFLhs97q?RwALq%1Wj3XEnLho@F`_)k5i1?@__?ILadE}qPC`Pb zib_*Ym`Y}PQ--I+$FO@_UmZS7oW_rh*&!O>V#tlg++Mp@(zrM zCN{s*)uDY>Sd_5Vu`+vfAQNo}qTu4-nU*AE&);GoOHPQAP#4Yxuo;%RBtl)rCue5V zq*2PL-+_HE5<3w|Nwrv~7j|H&?Qi&!*|#hU*;qj<1Zo4~bXR?>#bfz2Y#Ar*pjXOR z-JHM#mAT(3ZM%6XCF$}FrR0{ zGzH7qT1{|usHNiA+R>5GaLU8!d?u!!jZP#B?I04my3a;MY)$8`SE!}@t%vfT`yWiw zGkGh4;j7_q4Vm+MMopw$p7X)KvM0Q4W2GXH6yklM4<$k(Z^N3z`o-jKcnY&hSM%TJ zFE~pKDWrV0;W&o;EF1e&%>HzDOgJ%eK-@X20gg@LYS2CH~g*FGpoq zF1hv%G`_dGpyPR@`eQ#bJOeW>)bl6waY9s%(zv00|F?bj&&(xOI730GZpE;N5rwB{0J-2pCN9u_S$q}L* zV2ofd&KS&Dj%G@|JW^YIz(~cyFNKy6e6?x;J=yM5GkF!%xbms0pGN%c)L#2F7{)iB zJMesGaW`Bm*fQ9U^5j`rS&SSt6P%ZvLD5+2VZhF?9zV&duVfB&YuBA;4gK6#p!33X z{cW&)Z>k5z8>PjO$v2MlRPsr}u(De5>_I)Wb8pA_)~!PFUiFnV2e791%WPN#GDlGh z+O#Kr`PrW_Nzs%d)J_u&pgEySV0WGQU{>+Ani-Py#J)9tUsW)^li{SHysQUS3V+@& zH5K8|-go!mr?rS;f^bdsgT#)6ynD0X++tWje*U}3t+_TW+dD#;PCH5zInh71#y5(t z#0q$Af9zYFe~`l~%3{EePYB>{)^t~j`jJ*KSUBlDt9g=tlZWOd<@3ONqck>`qN1uF zOyF`p|BDWeorpvKQQ|6)8pEccM~$+PI> zVbe)A*?5|R)TvQSR4qn=GOw;Q_r7)aw;C7q(I3ms4?f=WK4^b-Nir%*H_Yz|e#()X zLt%0Lv_RJ`9OceocwS%rF#473r7ngOj~@@lI`#NNR>XTHLzS}4_uTsvWKB~ z+x>#W{Z^d6@`3lDR*7qWXButi&%_AEfaP9T1?iPYlDCMIv;?CTQOJ*{M!uaDe6JG? zcE?iajTLubz&#z!+y)<#J{q=0FCCb~3l*;0Ml8ZY%q%zA$0vEkeS(bMRN(urQ0?%f zJ$*ELr`CdBG-$(B$XvcW8gP}7>E(i^$FP&N&w+~gs%6lAYO`t3Ju4N}2Mk1!#EO7l zv5!Kmcwo70gIabE;tN;4y!LgRq7P8%{64Vf?LQgq7&3{SHfu93K8yFBJ&abjS!XSm zTq@LfWpd5pz97r|$#PK&H~?3jnh4ACGWO{hI6O@9GD|Ocp4=;9kQka2qa5Yuhu7)?kuqb~`6y?Vm%ez5SP~ z?!}eLpVX!|+xYx?3mJ%AP0sF8Hq*%FrYlSjX&>>?E&$dz+TQQh6lVboh-43^UG+a1 zU6`|1s9RX;Ffj06{}3YQFWj~@7gK5OxF^x%acsou$nu|$av|I zTR3;+gunK-hpYFO60($OKl=jwNj%y@U-o6|SocBZ;LSB=Z(&@~aqHfftAw73=3C3v zI#}0z4p{E|t%#~^L}$;jfTvx-;*hl0Nx$#$5aw|stBUki#kj+i$5f3qVQV+N0g4`} z!y>diyHlTAWtvN_9mM;eyc>$0KppdZ?0R5UIJh}YS1WT_2Gej96E}NhIUYhUm-;1; zEVJr!KE_F-=gPaonWc%MVV9=9N$l>OUdQ+$OLlducV^ogrunOUujtJ7PE79Fs+(Q^ z99BJhJTpHBw%VQFVRWgq4|1yj0-`BnfP!)NPD0FQXgOr_QP6A1L?Bm2M~144o}@+N zp(1C6{p#gAZ$h&a4QwNW@@+br}_$&XW{8Y&Ev+= zLEJE+^qOToi_s?7zHDvO)M%&2{)~u-wfA1dFZOklBK=Dz!Z)-99-%#5R+*PLsGqC$ zHK9yLg%6~)LP=k*y)?saRPZfkJ~T7+3`2UC)&1aWC?nyLafZlc)zAiFo1J}sB7aF;+K2zA`CRi*#{ zxRPkzu$SA-?|o2X$|MOVP$l5sC;6{uIa%V`^!OnUuhoC|^Q#`!jpY-8|2n*~8HDVs zS~e!Fbi5Ix4zUXQIbsfT{(9Ki;HmuNU^b|{s_In@Qd@i!vK#l&%%271W?eJ(LkM%^ zBboU$yhPTHGgXs>4xyY&tVkTL$wMtllI8D^szlDn+&joN-QvFcSp@#$RuW%;|Iwh+ z6w69_S{LW*^OYloC3 &x*U5LcOnS%H68-GiW3Ne$dy*0j$W6g}c72McuVJiWQLu zuY)YG6N4xN_}L&wmi>*r=t_}PING=FwXnRH5kOnk+JY0n%fJwMaK1CMvFr8xeTW0g zxbDR1RBhw$7^kKA&rW*GtaiKZ#hv)A2c$VpzQ-3>Ud!@otryC^D=#G~RphcU-#ccCgsQpn_(Pqum!foUpT$6#La9I@VWoU+aSgFx^C9V*<9@FJF{6j z1&tcVLDk3g9{mcBiFlPYUwu%*ykBkFI@zQJ@C1kR3y8cs{Bhi#X5soS6CTRHdQg(} z#Xn2snzgQgZrj``2?^s*)24uc>Z{f1&;YtEG74=(lql!LI4fLRZ^~eOpvrxRckiY6 z>GYrVUQJ*M{MA!Ww*G5Z!eDx5=V`5_PcmAk%QN!$xfp9@>FMq9^h(OgNjnCz zCPGiP9>ZKTGfVEn5PF_SGWNQ<%F4>3+Vfx)ea(W()_bJEK;xY3WSJKwcr+~c9qyo? z_$E;L_zRFtqNZsLW=`x@QYvd^t0kj2(%@eXcRDwrPk%BhrV`d?#X@`2=WXRHb9%me^b;U&ZrA;Sde>VU5@$6r?Lb^AP3Nb-oj#~_lh zocA?ut>?#%zV=-x)`fHLJlc+@UD&4SDz>8;a+*?>8th`k={Y@cO?we3Vp;bbd7Kok z`2OIGjAOy&F%8VA*i~66kLD$D-a`bBAt-1m#ZvzKq`SPi$#FH}?Cdr$z3XmF{^Bl= zQ)m1DEhl9pF;5C!OkLi8Q-w>l;N91nog-x~%$-NhP|Q?Q(`k_Z*(Y;rpOK24&o{mH z20pWSzCRW=i3LGF4+IZlUDd)A1!+(8^Z=m3{XC}=4qH@Zj-J2vEHNWwsIm8>e zJGI*PZcSVjAI=$0L&`}`Ro5P-#6d#_Alg%VN^O{PrzYR2P~}Myv64|&0U}zwuU-)t z&JcqV^*PMdxX$jY^wU#8NPg$>$Nrh*%M!1N|EOszGTESpGb9{kR&Mh!@C}#e+_~<% zH&KMT#MGROMXXN?Qu{NK<&vt}lQMSzXSiq|lkm9LL{m2d-4o3hx7drmjmIkNE!DOV zT-v3HfRENzS$V<@3xyneT2?}P8}&@gzt*3tVC1U_vLzHwI$hJ)w%!-wbDv;t8$Ff; zvwWDG>#*-_#oCOr^#CjOOjfA#(#FhnR@TMn&6fz8IQbT`IAZKQ++ab2M6=g}TZ`m) z@;uVRxo&Wl|4MDbL^MMvO(^;5Xz7TjmEdAUy6XhsyW5Om$0!6O+ez;r{R7Ly?q2== z%w2eNKqYeF3d5sG?L|vpUhirRGr4Km5)ezQr}M-+mpTOjP!xhLC(0p%D91Qbdt_|X zNwe$eQ^RqG`0?@a<}254{di(2+{zG&+ILO_Oel>lWAU>gtjk;x9|*nB7&>Xt zir$EYUpW6XrjFS}(oS)dg@c{mM+kxZuqJJO{;g}ZtX|onEzbYpl%)o_x`3c|WYQ8k zJikk#y)rfW^CDiiyrf(LSA(ytEUfQZ6-t+HB8{iSPY7x#2`DO$XP;H5PkFQ`vRr;# zF*V~d)}$tHz&~iXoX72|%$35nG;Su-guZV(tgewba}71|NQYYg+OwAGhfQck$zFZ| zisu?Y{0O=s|DE+SPR=+Sob^c(#pklJQi!L^x?7MoWkzJt%nc9}4 zW2X=9B8LNzx9LTMt|-Pg3k%n2haW>-*_WBa8{oBU7kegX3!Tjf{Y3ZJ!e?Go#zV@W z`Cq;|MkTUKio~1+!??^2;$R>g5D2Zm*yy-e!o%Q=28r7Y;!-9b)Ojwy-3z|HXKLVD ztgse&iON58!N@J+^y(EKQ#GFQ?Xt4!P0bi^bbz8ro!enRsorn z4pcl=k%B+jEs2gnKuw>fBc_o)`cqzawl%FVWpYXiC-Gcp$h{6`WAz*S1@B)VqJ#wH zO6@bz$2~5qjftp_)`g}ph?#Cyc*^?k2rjQIQ70!m7CwJb_A6JR>J3f4c1H;g#~Xic6ol zqM`b(-@hwXIo+$Xm+@?VrB#@)(v^_*CZ#Gr+gXnX`zV?}QzGAK_1L3NL1*Y$T>oq} zT1Qr%E2+yOMHK;%fvPWH9jD#~2j?ztjZt;R^m;}~#P;(!r_$H-y_>aa7-n@XO*h`m ziPF>6<)O=Zw?pv%HgKMawlQ>7)^cH9vTW&9k;-@O%DCRh=_6&lvMay!KA`FzL3cBH zxl;R-NLgTxjR-&!sr+6!H^+$u;HFMNc-DBZH<%4vEp79r(p!(}E`xhdfahOK zj}5Rh472F>qz_tdISga87fU7saA8bi<|(?x?hLoc=9J9^Mk_ui%-t9ez?1T5q|*v8 z%pWejafD(_*Y`tTS0w1w-Y4ABI{gp>Gs%01Uy^ZLd$D?iu6WaC?0U0V7wPjG!) zWljan{Bv2;_Y3{mUTirVv-<$8xjFkhC0D1;D?wQZ`o>nJDm3Zmr|-Ua9W?=(3Y0>w zF%WTgaA=nAMq-B{ZSk-{AlAo4k5L<-ZS8le7ow=R%z}AYk||!VM!CHe)`G3*jQPc? z9-;A0xw!S6DJ}EC{fR>-1Ib%_Ma{3Ki@bdUte-q-Q@zEqcxP>M^DRllj-eIfnq{9L zLjfZ4rQz#<^UUq-8+cs_xp12H8z=@t{2(*JjgaXD#PhSo4Q~E2RupgslbKAMvW}WE zKBtk$ISMU=nfXp#Gxxo`IDT|{z#N)AC?P_Ayi3>ALyCXY&HepHov!vX?TAHd@9n08 zulCs3H%qRK>tZgGRG)zgO&dGunC6i$?;;}*cZJhl7RTf)kEQm|t(WqdRR`^5X$i-B z?O1O{k6v0^U(_y2+9?pNtT>!D1!vSpmPk1?e0CqAg_S3R=H--HGW$%;RWHAO2bD^> z+2w8%nR~v6it)MsE2^ZdaV5>E92rfgEK+}%AhU7!seS)yb~^Bk*KT0t;=13LjbZHyDS@OkX|Z9iBc+t-avxLmG1XOn8Xy>@mNi5(#W(A z!D`VGJAqedesCI5_AypA*Tci${M-9`Ha03K6ek0YExr@aSFx=4K4?^pNrAARMiOI* zoqaZz-LUx;KW4fA&FWg9$AIjxk%@GHS;*7ZuJ+Y9F<<@LXMGvXbQeFPm4w?=YnFlg zJ;muTm(`W=_7_G82DvQ-DIF^t&3^iF`JZdNrM9|5TF1^S3ajwHJ|y;&Q_79!>8WbH zy(200m7e^SRXwdB9nMAtw^O-_jj}5iMa2cKUwds)9{DAG zwdCc^`P7nfDZ`1;rKOh!B+BB+*7fEVRv&H#%!kCXSE_=c2Q!%O4NHfKL4hv(FcHV7 zimH~lB&oCX(vRjo)WY!7Jh4(q^TSt{@4g}B8&1h9%eC`6uUS70Gl|qy)p&ZhWjk>3 zaft4#iAB^=G^r!yLiL^)S7Exfj2S{l*TlrgY|!wknTB8u*XS5ejEqa`v)buOm+qxe zg9z~126FaAi%fjdJfv03!V>axVX@MDw&xOGp#jr3_mOMntMa5qxqXM<_PG+7%|a#v znyQs-KI|M%?MsG7(kAQhVUG|6;p3N*%hD&y{fn&5wgyZ3zf}bkys1UB%%pWZiW0ao~q?w@RWo8M}k3tpW zX!NC39syVs1E)0}T9fNJ#Lye)lXeTK-R5r9e%479=XN?D{f6FXcZ2D2_|6MiTebaf z$V8&c6yjW(xr@`@EB)Xy-gxaC-f0qU7mum4oj&;7%PaVuRHDajS_L9RZ024$4aaNw zNfmSnBcLu7f zWp(PUCg&UE32Am)WNaUq1gT@M?XPUtaqP-J@J=GWrwAZ-C@br53)<|7@#t7nZlIzO zr)Y=pk`hZTR~0&D?6MbKVva!Gh=_|pu0-0A6 zSrBwD=T&Z@JWFp*@(}+lr08bdHT382x7gmci6GRYlG~+dxJY*iNeMM5Av{2l961GD ztm0?OOCmN_r6dIe3v#WojX`(-Nt{I50(gYP)uK2FD(KG1rk*|x{}g1((sHJi`VC5f z+L$;j+g145Wsf7-OO(NkrXz|E*VKr{-`bIohYEw9l5+t%sZr$op^-7AG!*#kpR?i0 zssg;CT@dj%3szQ|A_CtOW`-fBjfw)Pp5~h(J?Gh2_SN8}mcy}Og;P5^ zMQ8gUX^!_qz-yAo~9}=>EdFo6&`R5nPdo4Qa1>4l`qc(p3 PlSxZWU$sp6Ug&=SGZ%vI literal 0 HcmV?d00001 diff --git a/test/testimages/3b.png b/test/testimages/3b.png new file mode 100644 index 0000000000000000000000000000000000000000..ee77a49262d38aa7ff23f2df91ab4cffdeef277d GIT binary patch literal 9490 zcmbVx1z1$=y7o|#A}OGBC^Za2&qy~&Nh3K7LpO|c4}bGQPdNP z7T|zzhcS9O*gLvGJ;j*+kPAi6e_sYMGyVZ_w-aNQ`mK;rUsZ!q#>o}ID99rOgo6cm z8HFJ{U?E-sK`=KXA1_!K#48Bm6$0{tp}ZncJ}~27A7->RR|`w1rmXy5y3l80%+~Ji z&QK7@!^4BegP+IA)d~cLKp-GqJ`f)t5RCx3c{#enJb{jGEdP)oi*SRx+Bm!0I5{%@ zmIyO!G6 zicT2|m^xnom|n1(d_vD`MQ#fjE1X| zrHws$!A(;^no&tkMhFZM5(4t^fd8PYstQ$dbaRI}!VyZcV$5jg@YvW`KrImF5Pk?R zACTW%2n-b96SM@1AO!h=Fg{CubADk6n9t(x{jyGQ3A6uaslQoSpd}*s`1l3+ zEChi<=0cW00U?Mm5GEjE0TeLj;}-!#U=WBP|L?T_Ba@(tHg4z`d;L{NS_qfFX7)CW zeSZ`17*OzwyWaN%LR(J**LEq5ngc{Heyx$4rTE-tV_|q`E=AbG@@sb3V2JV6V#lommVeX? z4g&WdL;5_-4P&Y3$&HfLx3iU2tKk5t+nt{;_H8+yeC1((LUJ8FnJ|6mTTy+Yiws!Y zp}B({$Y#cavzeet+y+*})(%V{WBSf;pHiaa%13Aa*M8gWZvJ8LO3BSMD@|;|Y+C|0 zX}%it?Q8vq;zKWx8{MNx8Xe0qP#4a!l>2uzweC2qv5i{_l=8iH2C>|iuQ%Jd<$M6= z$d9bQG1IuAX}X)Fl5O5PsAkw|+i|oZA?{8k(IiU4U~oNM$X_U&9Lg2QC3}zO_NY0M z=jQCQ>D;{GMDP2YgvVURZyk4NXc>EdDG zu#?TSYj2C&LF+}i0=>`Pa#tj{YBarwF>!oJ>Zcm*^ojh?D5!Nad?NUzLn1QiIT2@7 zV$@{Lf#zkBf2AbX?QytvSzJN)%}LmYMN>h9{Flr{uNIi?I-Q46YyMg3*3w%AXi2oV z?R>4*S&~J+?{^Omi5K%q3`Uh7nr>4?#qX0BJHKQ>-C*Ec8}rOG#%K9{3L_*z(-pZ> zEMnuveUNwj-OJ5Jtq7t*J5vqQ5;1z9ej$2xIvqLm?FTE|r_ zI&ahsj;*Dje8EVL{7+JAhOSioAD)s+I}e2}X*x@e9`ZL(Lf z$&8JMA+0#+9?cj#pqQvZY(LlF=U+4TK64#pn_7QZ>_g{$b#=bgd9iTS&FOU(+`LJL zo&L4+K?(zfERegplSRy9uDUm~5Y)Kj&K5syBNUMP4pUCKxac$N{%U=U3SihpK@mnc z!CQ5wPf}g)$slxl^02n#2j!d=o)=PY?q+=Sp3tyZ!;u57s+P2s$;^kU+3*cOg87?g zGaB;^v+p+~nolAOj5T-}Gkrt>c+>&Xk!WPIC18CAC? zk28cPdrO^s&Dc~bk~JH}g@5RM#Fv|VwTed^rx-(!h>fLa$}U0n2FD&!?GOl8LZ#1$ zILg>fO3K&p8HJ=T_EuEjSzOKVSz2CKekWY~_Ee#yU>~8mrYa>L@1MIBbRquf_?^cC zo=@``LJZ{5tTV;nE>-pd8)!O&QKy1fXyEjR0!ys6yNVXOR{N1>>Y4{IP9Mo?MN*!ZQ_{y(nQldwKir@f{`p z0>^owUsL=}1t*cNal1c46*=Tes9EQFk14ET6>XXOiOPQE9tN_I=#r5LFfJEN-#!w~ z7SY7xVQ1h8E~RL2t=*Sgl}@b8X~ z9nBH=9ooc?mUvHmdvjK(*_Aaen56vxr^4aIRB+^1@fzTe;8#rMuJB0RLrKSIae{(^ zXa^2^Oyp}p>a6Qs9#wPIXZ;U$8`Nd`(w(VQSK23ns9NWq>llyTU`4U=m6>^I-}`E}FnVVn#Uz{s$==OL z;7DCnJTFK7`&6T}T)uA%F5HHi_ArhR2+|jZ>})CgGA$OaL^*8yBzLFD?@=M{m4y(@ zr6#Mzw=H52YKu`#XM=KVK8gW3HpnSiQ9H*pHrC9Bf6~BKe4L`j8c)rX &%EU&5 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 literal 0 HcmV?d00001